1

所以我有以下代码,它会影响 cookie 插件的一些页脚标签。现在我有点n00b,无法找到使代码更加动态的方法。现在我必须复制每个变量并为每个“退出”创建一个新变量。我想知道是否有可能使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 来轻松完成此操作

因此,假设您的 current#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 回答