2011-07-06 5 views
0

私はこのサイトの投稿から一緒につなげたトグルリスト表示を使用しています。彼らは素晴らしい仕事をしていますが、私は彼らがクッキーの価値を保存できるようにしたかったのです。jQuery save "this"を使用するトグルリストのクッキー

"if(myCookie == value){.myClass" ...} "などのように、単一のクラス/アイテムをターゲットにしているときに、クッキーの働きを理解しました。問題は、私が "$(this)"で呼び出すことによって影響を受ける一連のリストを使用していることです。したがって、クラス値を使用してそれらをターゲティングすることは、そのクラスを使用するすべてのものを対象とするため機能しません。理にかなっている?クッキーは "myClass"ではなく "this"に影響を与える必要があります。

以下は私のリストのためにまとめたコードです。

// append links to the element directly preceding the element with a class of "toggle" 
$(".toggle").prev(".toggleList").append('<a href="#" class="toggleLink" id="collapse"></a>'); 

// hide all of the elements with a class of 'toggle' 
$('.toggle').show(); 

$('a.toggleLink').click(function() { 

    // change the link depending on whether the element is shown or hidden 
    if (!$(this).is('.active')) { 
     $(this).addClass('active'); 
     $(this).attr("id" ,"expand"); 
        THIS IS WHERE I NEED THE $.COOKIE TO WORK. I NEED IT TO REMEMBER THAT "THIS" IS "EXPANDED" OR THAT THE FOLLOWING LINE IS "COLLAPSED" 
    } 
    else { 
     $(this).removeClass('active'); 
     $(this).attr("id" ,"collapse"); 
    } 

    // toggle the display 
    $(this).parent().next('.toggle').toggle(); 
    return false; 
}); 

ただ、これに追加する... 私たちは他の場所で我々のテストサイトで使用されてきたクッキーの基本的な使用方法を理解を持っています。問題は、私は上記のようにそれらを使用する必要がある方法は、単一のクラスが、実際の項目をターゲットにすることはできません

// cookies 
// sidebar state 
var sideBar = $.cookie('sideBar'); 

// Set the user's selection for the left column 
if (sideBar == 'collapsed') { 
    $('#btnCollapseSidebar').css("visibility" ,"hidden"); 
    $('#btnExpandSidebar').css("visibility" ,"visible"); 
    $('#leftCol').css("visibility" ,"hidden");  
    $('#sidebar').css("visibility" ,"hidden"); 
    $('#rightCol').css("margin" ,"42px 0 0 45px"); 
}; 

...私はそれらを使用する方法を知っている唯一の方法は、彼らは以下の通りのようにそれらを標的とすることであるということです("この")。上記のコードを適用して適用しようとすると、私の ".toggle"クラスのすべてのインスタンスに影響します。 ".toggle"クラスはページ上で複数回使用されるため、無限に利用可能にする必要があります。

答えて

1

jQueryを使用するCookieプラグインは実装が非常に簡単です。 http://www.electrictoolbox.com/jquery-cookies/

var CookieOptions = { expires: 7, path: '/' } 
$.cookie("CookieName", "CookieValue", CookieOptions); 

これを行うことにより、クッキーを取得します:入力用

$.cookie("CookieName"); 
+0

おかげで、私はそれは私たちが他の場所でクッキーを使用してきましたし、私は "にそれを適用するかどうかはわかりません方法だったと思います.aClass "の代わりに" this "を使用します。それは理にかなっていますか?私が持っているコードは、ページ上で無限の回数 ".toggle"を使用します。すべてのインスタンスをターゲットにするため、「.toggle」をターゲットにすることはできません。私は、この "この"部分を対象とすることができる必要があります。 – bWhitham

+0

私はこの回答が「1」とランク付けされていることに同意しません。素晴らしい入力ですが、上記の答えは私がすでに解決している単純な問題の非常に単純な解決策です。私が持っている問題は、私の質問のコードに記載されているように私が使用しているトグルで動作するようにクッキーを取得することです。 – bWhitham

関連する問題