我尝试使用此代码来做到这一点,但没有成功。有帮助吗?
$(function(){
if (jQuery("#dtype:checked").val()==1) {
localStorage.checked = true;
//do something
} else {
localStorage.checked = false;
//do something
}
('#dtype').checked = localStorage.checked;
});
-
jQuery("#dtype:checked").val()==1)
始终返回值,无论是否检查。正确的比较是使用其中之一:-
$('#dtype').is(':checked')
-
$('#dtype').prop('checked')
-
$('#dtype:checked').length == 1
-
-
$('#dtype').checked
这是错误的语法。您可能会因为在纯JS或jQuery中做而感到困惑。请参阅下面:- js:document.getElementById('dtype'(。检查
- jQuery:$('#dtype'(。prop('checked'(
-
localstorage只能保存
String
类型,您无法将其保存为布尔或整数等。localStorage.checked = true;
始终会产生string
" True"不boolean
" true"。记住基本"true" !== true
-
附加信息:我们可以使用以下方式检查/取消选中:
- 检查:
$('#dtype').prop('checked', true);
或$('#dtype').prop('checked', 1);
- uncheck:
$('#dtype').prop('checked', false);
或$('#dtype').prop('checked', 0);
- 检查:
注意:我们可以使用 Number()
强迫我们的localstorage字符串成为整数,以使其更简单
请参阅演示:http://jsbin.com/vigerohebi/1/edit?html,console,output
<input type="checkbox" id="dtype"><br>
<button>delete localstorage</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(function(){
//initial
console.log(localStorage.checked);
$("#dtype").prop('checked', Number(localStorage.checked));
//onchange
$("#dtype").change(function(){
if($(this).prop('checked')){
localStorage.checked = 1;
//do something
console.log('checked');
}else{
localStorage.checked = 0;
//do something
console.log('unchecked');
}
console.log(localStorage.checked);
});
//delete localStorage
$('button').click(function(){
window.localStorage.removeItem('checked');
});
});
</script>
,如果浏览器支持并在页面加载或文档中,可以在会话存储中设置检查项目
if (window.sessionStorage) {
sessionStorage.setItem("checkedvalue", checkedvalues.selector);
}
$(document).ready(function () {
//Retrieves the session storage for checked items
var newcheck = sessionStorage.getItem("checkedvalue");
$(newcheck).trigger("click");
});