我在页面中有很多链接,点击每个addClass
'投票'到此链接。然后将效果保存到cookie中。这样下次刷新Web浏览器时,它将保存addClass
事件。
我的代码在这里,但它只会保存1个cookie。我的意思是,如果我点击了link 1
,link 2
。它始终记住最后一次点击。刷新Web浏览器。仅link 2
addClass
'投票'。 link1
错过addClass
事件。那么如何为每个链接保存多个cookie?感谢。
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/cookie.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var cookieName = 'up';
var cookieOptions = {expires: 7, path: '/'};
$("#" + $.cookie(cookieName)).addClass('voted');
$(".up").live('click',function(e){
e.preventDefault();
$.cookie(cookieName, $(this).attr("id"), cookieOptions);
// save cookie depends on each link id.
$("#" + $.cookie(cookieName)).addClass('voted');
});
});
</script>
<a href="javascript:void(0)" id="m12345678" class="up">link 1</a>
<a href="javascript:void(0)" id="m12345679" class="up">link 2</a>
<a href="javascript:void(0)" id="m12345680" class="up">link 3</a>
上传我的代码:jsfiddle
答案 0 :(得分:2)
更改cookie名称可能会解决问题。
var cn = cookieName + $(this).attr("id");
$.cookie(cn, cookieOptions);
// save cookie depends on each link id.
$("#" + $.cookie(cn)).addClass('voted');
更新:此更新已添加回答您更新的问题:
function checkIfAllClicked(){
var flag = false;
$(".up").each(function(){
var f = $(this).data("isClicked");
if(f == true){
flag = true;
}
else{
flag = false;
}
});
if(flag){
// refresh the page or call any-other function you want
document.location.href = "any-url";
}
}
$(".up").live('click',function(e){
e.preventDefault();
$.cookie(cookieName, $(this).attr("id"), cookieOptions);
// save cookie depends on each link id.
$("#" + $.cookie(cookieName)).addClass('voted');
$(this).data("isClicked", true);
checkIfAllClicked();
});
答案 1 :(得分:0)
解决。在这里参考:Jquery - save class state for multiple div #'s to a cookie?
分享所有人的答案。
$(document).ready( function() {
$(function() {
var cookieName = 'up_';
$('.up').each(function() {
var id = $(this).attr('id'), cookie = cookieName + id;
if ($.cookie(cookie) !== 'ture') {
$(this).addClass('voted');
}
}).live('click', function(e) {
e.preventDefault();
$.cookie(cookieName + $(this).attr('id'), true);
});
});
});