1

我使用一个网站,它有很多复选框来启用/禁用不同的选项。但是有一个缺点:要勾选复选框,需要点击复选框,但我希望能够点击标签,因为这样更容易。所以我决定写一个 Greasemonkey 脚本来添加这个功能

$("div.option").click(function() {
    $checkbox = $(this).children("input");
    isChecked = $checkbox.is(":checked");
    $checkbox.attr("checked", !isChecked);
});

我启用了这个脚本,然后我访问了网页。首先,我单击该选项,然后复选框选中!然后我再次单击,它取消选中。但进一步的点击不会做任何事情。这适用于网页上的所有选项,它适用于前两次点击,但随后停止工作。如何修复脚本以使其永久工作?

我在 Ubuntu 12.10 上使用 Firefox 19.0.2

4

2 回答 2

3

您不能像那样切换属性的。该属性与选中的属性/状态不同。checked

在 jQuery 中执行此操作的正确方法是使用.prop(),如下所示:

$("div.option").click ( function () {
    var $checkbox = $(this).children ("input");
    var isChecked = $checkbox.is (":checked");
    $checkbox.prop ("checked", !isChecked);
} );


请参阅“如何使用 jQuery 或 JavaScript 检查复选框?”

于 2013-03-19T10:08:10.493 回答
0

使用标签label而不是 JS

纯 html 这里http://jsfiddle.net/RAkjk/

于 2013-03-19T09:58:58.497 回答