在使用jQuery下面的代碼:複選框被觸發時,爲什麼「checked」屬性不正確?
$("input").change(function (evt) {
console.log("change event handler invoked", evt);
console.log($("input").is(':checked'));
console.log($("input").attr("checked"));
console.log($("input").prop("checked"));
});
$("input").trigger("click");
$("input").trigger("click");
的is(':checked')
和prop("checked")
都能表現出一個真實的,但'ATTR( 「選中」)將顯示不確定的。我以爲他們是一樣的? (即使我們手動點擊複選框,效果也是一樣)。
另外,如果我設置HTML的checked
使該複選框在默認情況下(http://jsfiddle.net/UcGyM/1/)檢查,現在attr("checked")
會打印出checked
兩個觸發,所以它不能夠告訴它是否被選中或不 - 爲什麼呢? (這也是奇怪的是,這兩種顯示checked
,但$("input").attr("checked", true);
或$("input").attr("checked", false);
可以打開或關閉它。)
一個相關的問題是,如果我們要堅持使用attr("checked")
,是否在HTML的意思是,它有有checked
屬性:<input type="checkbox" checked>
,如果是這樣,它如何指定屬性,但默認關閉? (因爲checked="false"
或checked=""
或checked="0"
不會讓選擇它的默認值。
[這個問題](http://stackoverflow.com/questions/5874652/prop-vs-attr)可能的幫助。 –
屬性並不總是與屬性保持一致,這就是爲什麼對'.attr' /'.prop'所做的更改非常重要和必要的原因。 –
你的問題的大部分答案在這裏http://api.jquery.com/prop/ – j08691