Jquery-cookie插件:如何设置expires为1天以内的时长?
问题分析与解决方法
代码中的关键错误
- 语法错误:设置Cookie的代码存在调用格式错误,
$.cookie(name, $(this).prop('checked')), { ... }里的逗号误用,正确的插件调用格式应为$.cookie(name, value, options),当前写法导致配置对象未被传入插件,expires参数完全没生效。 - 类型匹配问题:
$(this).prop('checked')返回布尔值,插件存储时会自动转为字符串,读取时直接赋值给prop('checked')虽能被浏览器自动转换,但统一类型可避免潜在问题。
修正后的代码
$(document).ready(function(){ $(".ing_check").each(function(){ var name = $(this).attr('name'); // 读取时将字符串转为布尔值,匹配prop的参数类型 if($.cookie(name) === "true"){ $(this).prop('checked', true); } }); $(".ing_check").change(function(){ var isChecked = $(this).prop('checked'); var name = $(this).attr('name'); var date = new Date(); date.setTime(date.getTime() + 3 * 1000); // 修正语法错误,正确传入配置对象 $.cookie(name, isChecked.toString(), { path: '/', expires: date }); }) });
补充说明
jquery-cookie插件本身支持传入Date对象作为expires参数,不管过期时长是几秒还是几天都能生效,你之前的问题完全是语法错误导致配置未被识别,并非插件不支持短时效Cookie。若需删除Cookie,只需将expires设置为一个过去的Date对象即可。
内容的提问来源于stack exchange,提问作者Astw41
相关产品推荐
相关产品推荐

