2012-11-10 53 views
0

爲什麼jQuery不返回'checked'屬性的值?jQuery不顯示.attr('checked')

它總是返回'checked',不管它是什麼。

<div id='div' checked='checked_value'></div> 
<script> 
    var attr_value = $('#div').attr('checked'); 
    alert(attr_value); 
    // attr_value == 'checked' no matter what 
</script> 

http://jsfiddle.net/BbRmH/2/

這是好的,在1.4,但是當我升級到1.8它完全搞砸我的代碼。我使用checked屬性很多。

+0

最好使用數據屬性來避免這種怪癖。 – Musa

+0

@Musa,好的,是的。但它確實「檢查」了含義。 – Qiao

+1

我沒有注意到該元素是一個div元素,「check」對於div元素來說不是一個有效的屬性。嘗試使用'data'屬性http://jsfiddle.net/cHpgb/ – undefined

回答

1

相信在較新版本的jQuery的正確的語法是 -

$("element").prop('checked'); 

屬性和特性之間的差異可以在特定情況下非常重要。在jQuery 1.6之前,.attr()方法在檢索某些屬性時有時會考慮屬性值,這可能會導致行爲不一致。從jQuery 1.6開始,.prop()方法提供了顯式檢索屬性值的方法,而.attr()檢索屬性。


我相信然而,你可能會錯誤地使用該屬性。通常,人們只會測試checked選擇器的存在。實際上只能有兩種狀態。選中並取消選中。通常,人們會使用類似的東西 -

$('.groupOfCheckboxes:checked') 

這將返回所有匹配的複選框的列表。您還在<div>元素上使用了此屬性。這不是有效的HTML。如果你想在瀏覽器中獲得最一致的結果,你應該堅持有效的標記。

+0

'prop('checked')'在''元素上工作得很好。 –

+0

@mar - 'HMTL' ...這是我發明的新變體。超級化妝文本語言。這將是巨大的... – Lix

相關問題