1

そのため、Cookie プラグインを使用していくつかのフッター タグに影響を与える次のコードがあります。今、私は少し無頓着で、コードをより動的にする方法がわかりません。ここで、各変数をコピーして、「出口」ごとに新しい変数を作成する必要があります。ifステートメントをより動的にすることは可能でしょうか? それぞれ#exitが異なるサブページにあり、すべてが main.js ファイルにリンクされていることに注意してください。

リンク: http://www.carlpapworth.com/htmlove/index.html

jQuery コード:

$('#exit1').click(function(){
$('#collection1').css('color', '#ff63ff');
$.cookie('foundHeart1', 'found', {
    path: '/'
});
});

var foundHeart1 = $.cookie('foundHeart1');

if (foundHeart1 == 'found'){
    $('#collection1').addClass('found');
};

    $('#exit2').click(function(){
$('#collection2').css('color', '#ff63ff');
$.cookie('foundHeart2', 'found', {
    path: '/'
});
});

var foundHeart2 = $.cookie('foundHeart2');

if (foundHeart2 == 'found'){
    $('#collection2').addClass('found');
};
4

1 に答える 1

2

これは、要素にメタデータを追加し、id ではなくすべての共有クラスを指定することで簡単に実現できます。

したがって、現在#exit1#exit2などがリンクであるとします。それらにクラスを与え、後で使用するためにexitいくつかの追加を追加します。data-*

<a href="#" class="exit" data-key="1">Exit</a>
<a href="#" class="exit" data-key="2">Exit</a>

次に、すべての終了を行うハンドラーを 1 つだけ持つことができます。

$('.exit').click(function(){
    var key = $(this).data('key');
    $('#collection' + key).css('color', '#ff63ff');
    $.cookie('foundHeart' + key, 'found', {
        path: '/'
    });
});

2 つのページがあり、すべて終了ボタンに同じコードを使用している可能性がありますが、ページの読み込みごとにすべてをチェックしたいように見えます。次のようなもので十分です。

var maxCookie = 2; // or whatever your number of hearts is
for(var i=1;i<=maxCookie;i++){
   if($.cookie('foundHeart' + i) == 'found'){
       $('#collection' + i).addClass('found')
    }
}
于 2012-10-25T07:24:05.633 に答える