1

ユーザーが特定のタブを選択したときに li 要素の背景色を変更するという単純な使用例があります。私が欲しいのは、ページが更新されても背景色の状態が維持されることです。

jquery cookie https://github.com/carhartl/jquery-cookieを使用してこれを実行しようとしましたが、うまくいかないようです。

私はcofeescriptを使用してこれを行っています。これが私のコードです:-

 jQuery ->
    $('.left-vertical-menu-elements li a').click ->
        $.cookie('lastclicked', @id)
        $(@).closest('li').addClass('active').siblings().removeClass('active')

        if($.cookie('lastclicked', @id))
            $(@).closest('li'.addClass('active'))
            $.cookie('lastclicked', null)

HTML :-

%ul
            %li{:class => "active"}=link_to "Games Playing", "#",:id =>"playing-link "
            %li=link_to "Games Played", "#",:id =>"played-link"
            %li=link_to "Followers", "#",:id =>"followers-link"
            %li=link_to "Following", "#",:id =>"following-link"
            %li=link_to "References", "#",:id =>"refrences-link"
            %li=link_to "Notifications", "#",:id =>"notifications-link"

Cookie が最後にクリックされた要素の ID を保存しているかどうかを確認するために追加alert($.cookie('lastclicked'))しましたが、これは正しい結果をもたらすようです。

アプリケーションにファイルを含めましたjquery.cookie.jsが、機能していないようです。

4

1 に答える 1

0

あなたのコードにはいくつかのバグがあります。

  1. ifCoffeeScript のステートメントで中かっこを使用すると、構文エラーになります。
  2. 言ってif('lastclicked')も無意味です。文字列は常に true です。
  3. $.cookie('lastclicked')文字列と文字列を返しますが、文字列を jQuery オブジェクトのように扱うことはできません。

私はあなたがこのようなものがもっと欲しいと思います:

jQuery ->
    $('.left-vertical-menu-elements li a').click ->
        $.cookie('lastclicked', @id)
        $(@).closest('li').addClass('active').siblings().removeClass('active')

また、CoffeeScript ではより慣用的であるため、 thisto に切り替えました。@@

于 2012-08-24T04:17:11.050 に答える