取消选中复选框时,在jquery .prop中使用布尔变量我该如何管理?

问题描述

| 我在jquery中有以下代码
    $(\'.checklist_true\').click(function(e)
{
    $(\'.checkid\').prop({checked: true});
    e.preventDefault();
})

$(\'.checklist_false\').click(function(e)
{
    $(\'.checkid\').prop({checked: false});
    e.preventDefault();
})
我想用一个替换.checklist_false和true类,并且想读取一个包含布尔值true / false的变量的值。 (最初是附加到标签的.checklist类。 但是,如果我尝试这样做:
var tf = new Boolean($(this).prop(\'rel\')).valueOf();
$(\'.checkid\').prop({checked: tf});
它总是评估结果并选中该框。有人可以解释我为什么吗?     

解决方法

您的代码总会得出相同的值,因为该属性仅被获取一次(在附加处理程序之前)。每次调用处理程序时,您都需要评估属性。处理程序范围内的this关键字表示触发事件的元素。 true和false值仍必须存储在清单类元素中的某个位置: 例如:
<div class=\"checklist\" data-checked=\"true\">Check</div>
<div class=\"checklist\" data-checked=\"false\">Uncheck</div>
然后,您可以从标签中读取值:
$(\'.checklist\').click(function(e)
{
    // this represents the clicked checklist element
    var checked = $(this).data(\'checked\') === \"true\" ? true : false;
    $(\'.checkid\').prop(\'checked\',checked);
    e.preventDefault();
});