单击几次后,Greasemonkey脚本停止设置复选框

Greasemonkey script stops setting checkboxes after a few clicks?

本文关键字:脚本 Greasemonkey 复选框 设置 几次 单击      更新时间:2023-09-26

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

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

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

我在Ubuntu 12.10上使用Firefox 19.0.2

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

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

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


参见"如何使用jQuery或JavaScript勾选复选框?"

使用标签label代替JS

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