2013-03-19 71 views
1

我使用一个网站,它有很多复选框来启用/禁用不同的选项。但有一个缺点:检查复选框,你需要点击复选框,但我希望能够点击标签,因为它更容易。所以我决定写一个Greasemonkey的脚本来添加这个功能 Greasemonkey脚本几次点击后停止设置复选框?

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

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

我使用Firefox 19.0.2在Ubuntu 12.10

+0

我看不出为什么它应该停止工作。也许新的复选框被动态添加?试试'$(document).on(“click”,“div.option”,function(){...})' – 2013-03-19 09:48:32

+0

这给出了相同的效果。 – 2013-03-19 10:07:01

回答

3

HTML你不能只是切换checked属性的就是这样。该属性与属性/状态不一样。

正确的方法在jQuery来做到这一点是使用.prop(),像这样:

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


"How do I check a checkbox with jQuery or JavaScript?"

+0

这很有效!非常感谢你! – 2013-03-19 10:12:10

+0

不客气;乐意效劳! – 2013-03-19 10:12:47

0

使用标签label而不是JS

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

+1

我没有自己的网站,所以我不能更改它的html代码(我可以用Greasemonkey做到这一点,但是它比我想要做的要困难得多) – 2013-03-19 10:09:22

相关问题