3 回答

TA貢獻2039條經(jīng)驗 獲得超8個贊
jQuery 3
在jQuery 3,removeAttr并沒有設置相應的屬性false了:
在此之前的jQuery 3.0,使用.removeAttr()上的布爾屬性如checked,selected,或readonly也將設置相應的名字的屬性,false。對于舊版本的Internet Explorer,此行為是必需的,但對于現(xiàn)代瀏覽器,此行為是不正確的,因為該屬性表示初始值,而該屬性表示當前(動態(tài))值。
.removeAttr( "checked" )在DOM元素上使用幾乎總是一個錯誤。唯一有用的時間是,如果以后將DOM序列化回HTML字符串。在所有其他情況下,.prop( "checked", false )應改為使用。
因此,只有.prop('checked',false)在使用此版本時才是正確的方法。
原始答案(自2011年起):
對于具有基礎布爾屬性(其中checked一個為1)removeAttr的屬性,將基礎屬性自動設置為false。(請注意,這是jQuery 1.6.1中添加的向后兼容性“修復程序”)。
因此,任何一個都可以工作...但是您提供的第二個示例(使用prop)是兩者中更正確的一個。如果您的目標是取消選中該復選框,則您確實確實希望影響屬性,而不是屬性,因此不需removeAttr要這樣做。

TA貢獻1810條經(jīng)驗 獲得超4個贊
使用checked:復選框的true,false屬性。
jQuery的:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}

TA貢獻1876條經(jīng)驗 獲得超7個贊
我建議同時使用prop和attr,因為我在使用Chrome時遇到了問題,并且同時使用這兩個函數(shù)解決了該問題。
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}
- 3 回答
- 0 關注
- 984 瀏覽
添加回答
舉報