2011-05-12 127 views

回答

2

已經通過這個最近,它取決於你使用的是什麼版本的jQuery。從1.6開始,具有原生屬性(例如「checked」,「disabled」)的attr的功能(屬性是應該存在或不存在的屬性)會發生變化,因爲它們可能會根據瀏覽器行爲返回不一致的結果。

在1.6中設置或測試屬性的正確方法是使用新的prop函數,該函數始終返回true或false。您使用的第二種方法也適用於測試。

7

當你請求ATTR檢查,你沒有得到一個布爾值:

// this would be correct 
if($(this).attr('checked') == 'checked') 

// jQuery 1.6+ 
if($(this).prop('checked')) 
+0

像所選我相信有瀏覽器和情況下,這將失敗了。 (因此改變使用道具)。 – Hogan 2011-05-12 17:32:29

+0

該屬性的值爲布爾常量「true」是完全可以的 - 具體而言,它不**必須是「checked」字符串。在DOM中,屬性確實是一個簡單的布爾值。 – Pointy 2011-05-12 17:46:10

1

更重要的是,只要使用this.checked,它返回無論是 「真」 或 「假」。如果您已經擁有DOM節點,則無需使用jQuery。

+0

如果有jQuery替代品,我害怕使用任何原生JavaScript,因爲我不知道它是否在一個瀏覽器中以一種方式運行,在另一個瀏覽器中以另一種方式運行。 jQuery幫助我確保我的代碼是正常化的。 – 2011-05-14 19:20:14

+0

我明白了,大部分時間我都採用同樣的方法。然而,'checked'屬性是100%的跨瀏覽器,所以在這種特殊情況下,它將按預期工作。 – ehynds 2011-05-16 13:21:45

相關問題