2013-03-19 72 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

相關問題