问题描述
|
我在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();
});