我想這會工作:如何檢查複選框是否已選中或未選中?
if ($(this).attr('checked')) {}
,但我不得不這樣說寫:
if ($(this).is(':checked')) {}
問:爲什麼?
我想這會工作:如何檢查複選框是否已選中或未選中?
if ($(this).attr('checked')) {}
,但我不得不這樣說寫:
if ($(this).is(':checked')) {}
問:爲什麼?
已經通過這個最近,它取決於你使用的是什麼版本的jQuery。從1.6開始,具有原生屬性(例如「checked」,「disabled」)的attr
的功能(屬性是應該存在或不存在的屬性)會發生變化,因爲它們可能會根據瀏覽器行爲返回不一致的結果。
在1.6中設置或測試屬性的正確方法是使用新的prop
函數,該函數始終返回true或false。您使用的第二種方法也適用於測試。
更重要的是,只要使用this.checked
,它返回無論是 「真」 或 「假」。如果您已經擁有DOM節點,則無需使用jQuery。
如果有jQuery替代品,我害怕使用任何原生JavaScript,因爲我不知道它是否在一個瀏覽器中以一種方式運行,在另一個瀏覽器中以另一種方式運行。 jQuery幫助我確保我的代碼是正常化的。 – 2011-05-14 19:20:14
我明白了,大部分時間我都採用同樣的方法。然而,'checked'屬性是100%的跨瀏覽器,所以在這種特殊情況下,它將按預期工作。 – ehynds 2011-05-16 13:21:45
爲什麼不是一個問題。那麼這個看起來奇怪的2k用戶呢? – Hogan 2011-05-12 17:22:46
+1 @Hogan讓我發笑。 – pixelbobby 2011-05-12 17:23:31
你正在使用哪個jQuery版本? – scrappedcola 2011-05-12 17:25:00