【发布时间】:2012-07-09 21:24:39
【问题描述】:
首先抱歉,我是 jquery 的初学者。
我的问题是我试图用 jquery cookie 制作一个类切换器。
它工作正常只有一个问题。 当我在主页上选择工作时,每个工作都有一个唯一的 ID,并且旁边有一个按钮,当用户单击它时,它会将其保存到收藏夹,再次单击将其删除。 如果它保存按钮 cganges 为黄色,如果删除更改为蓝色。
我能够在页面刷新后保留课程,但我的问题是我真正无法解决的是,如果我列出了更多工作,点击它会保留课程,然后我添加另一个它会从另一个删除课程并将其添加到单击的内容中,因此它不会仅将其保留在多个上。
有人可以给我一个提示吗?
我的代码:
html
<a href="#" id="<?php echo $res->info_id; ?>" class="favorite btn btn-primary btn-mini" title="Add to favorite">
<i class="icon-star icon-white"></i>
</a>
jQuery
(function () {
//save to favorites
$('.favorite').on('click', function(e){
e.preventDefault();
var data = [],
newclass = 'btn-warning',
oldcalss = 'btn-primary',
fav = $(this);
favId = fav.attr('id'),
$.ajax({
type: "POST",
url: base_url + 'ajax/add_favorite/' + favId,
data: favId,
dataType: "json",
success: function(data) {
if(data.status == "removed"){
$.cookie('keepClass', 'btn-primary');
$.cookie('jId', favId);
fav.removeClass(newclass)
.addClass($.cookie('keepClass'))
.attr("title", "Add to favorites");
} else {
$.cookie('keepClass', 'btn-warning');
$.cookie('jId', favId);
fav.removeClass(oldcalss)
.addClass($.cookie('keepClass'))
.attr("title", "Remove from favorites");;
}
}
});
});
$('#' + $.cookie('jId')).attr('class', "btn btn-mini " + $.cookie('keepClass'));
})(jQuery);
谢谢
【问题讨论】:
-
看起来您每次都在覆盖
$.cookie('jId')- 我建议将它们作为逗号分隔的列表存储在该 cookie 中。 -
如果不是很大的要求,你能给我举个例子吗?
-
我想@ClarkeyBoy 想说的是:与其在cookie 中只存储一个Id,不如存储多个Id。因此,您的操作可能是:i) 如果单击“id1”,请检查它是否在 cookie 中(值是一个列表),如果是 - 什么也不做,否则将“id1”添加到 cookie jId 中的值列表中.在用户选择带有 id1、id5 和 id8 的按钮后,您的 cookie 值将类似于“id1、id5、id8”。当用户再次按下按钮 id8(取消选择)时,新的 cookie 值应该是 id1,id5 [id8 应该被选择性地删除]
标签: jquery codeigniter cookies