一個問題,今天用jquery-1.11.3.min.js時遇到的關於input復選框的問題。
類似於以下代碼:
<ul class="demo">
<li><label ><input type="checkbox"/>首頁</label></li>
<li><label ><input type="checkbox"/>關於</label></li>
<li><label ><input type="checkbox"/>產品</label></li>
</ul>
需要實現,點擊li,判斷復選框是否選中,如果選中的話,取消選中,如果未選中,則選中,在1.11.3的版本中,使用
$('.demo').on('click', 'li label', function(ev){
var isChecked = $(this).find('input').is(':checked');
if(!isChecked){
$(this).find('input').attr('checked', true);
}else{
$(this).find('input').attr('checked', false);
}
ev.preventDefault();
});
在第一次未選中時,點擊,可以選中,再次點擊,取消選中,再次點擊時,從開發者工具中顯示,再次被選中,但是頁面中復選框的對勾並未勾上,后改為1.8.3版本,完全可以實現。而且是在IE8上面也沒問題,只有chrome和opera瀏覽器上(只測試了這兩款瀏覽器),反復試驗依然無法取得正確結果,也未能找到原因。
后經qq群朋友解答,使用prop函數替代attr,完美實現需要的效果,但是依然不解attr導致的問題的根源在哪?
