2011-05-13 71 views
3

當我檢查\取消選中複選框和單選按鈕時,瀏覽器未檢查設置屬性。所以,當我試圖取消選中複選框使用jQuery:取消選中由用戶檢查的複選框

$('#tab2 input').removeAttr('checked'); 

它不工作。它的工作情況複選框從我的JavaScript代碼中檢查。我如何取消選中已經由用戶檢查過的複選框?

+4

由於這個東西的API近期發生了變化,您應該指定是使用jQuery 1.5.x還是使用jQuery 1.6或更高版本。 – 2011-05-13 15:04:03

+0

@Jamie Wong我使用的是jQuery 1.6 – Neir0 2011-05-13 15:12:18

回答

5

你設置一個屬性,所以在jQuery 1.6使用.prop()

$('#tab2 input').prop('checked',false); 

或者如果只有一個input,直接更改該元素的屬性。

$('#tab2 input')[0].checked = false; 

jQuery 1.6.1被釋放,或者upgrade to jQuery 1.6.1,你就可以回去使用.attr()重新設置屬性,但.prop()仍然會是更好的方式來做到這一點。

從發佈說明:

具體地說,布爾屬性如選中,選擇,只讀,並且在禁用1.6.1將被視爲就像他們曾經被jQuery中之前的版本1.6進行處理。這意味着,代碼如

$(「:checkbox」).attr(「checked」, true); 
$(「option」).attr(「selected」, true); 
$(「input」).attr(「readonly」, true); 
$(「input」).attr(「disabled」, true); 

甚至:

if ($(「:checkbox」).attr(「checked」)) { /* Do something */ } 

將不再需要在1.6.1爲了爲此前預期的工作來改變。

+0

我不知道爲什麼,但這也不起作用 – Neir0 2011-05-13 15:26:18

+0

@ Neir0:使用'.prop()'在jQuery 1.6中適用於我。在你的問題中一定有其他問題不可見。 – RightSaidFred 2011-05-13 15:45:39

2
$('input[name=foo]').attr('checked', false); 
+0

這也行不通 – Neir0 2011-05-13 15:13:09

3
$('#tab2 input').attr('checked',false); 
+0

這也行不通 – Neir0 2011-05-13 15:12:34

相關問題