我使用的网站有很多复选框,可以启用/禁用不同的选项。但是有一个缺点:要选中复选框,您需要单击复选框,但我希望能够单击标签,因为它更容易。所以我决定编写一个Greasemonkey脚本来添加这个功能
$("div.option").click(function() {
$checkbox = $(this).children("input");
isChecked = $checkbox.is(":checked");
$checkbox.attr("checked", !isChecked);
});
我启用了此脚本,然后访问了该网页。首先,我点击选项,复选框检查!然后我再次点击,它取消选中。但进一步点击不会做任何事情。这适用于网页上的所有选项,它适用于前两次点击,但随后停止工作。如何修复脚本以使其永久工作?
我在Ubuntu 12.10上使用Firefox 19.0.2
答案 0 :(得分:3)
您不能像这样切换checked
属性的值。该属性与选中的属性 / 状态不同。
在jQuery中执行此操作的正确方法是使用.prop()
,如下所示:
$("div.option").click ( function () {
var $checkbox = $(this).children ("input");
var isChecked = $checkbox.is (":checked");
$checkbox.prop ("checked", !isChecked);
} );
答案 1 :(得分:0)
使用标记label
代替JS