$(this).attr("checked", false).checkboxradio("refresh"); //應該這麼寫吧,少了$這個東東~~~跟js混淆了
這 天用到jQuery功能,想實現一個簡單的復選框動態全選或全不選,結果測試發現 attr(‘checked’,'checked’);與attr(‘checked’,true); 都不好使,要麼第一次成功了,第二次調用就沒反應,完全不起作用了。那到底是什麼原因呢?
害得何問起到處到網上搜 jQuery checkbox的操作,動態選擇的相關文章,都寫著是這樣的實現代碼:
$('input[type=checkbox]').attr('checked','checked');//全選,設置屬性 $('input[type=checkbox]').attr('checked',true);//全選,設置屬性,通過true布爾值形式 $('input[type=checkbox]').attr('checked',false);//不選擇,布爾值形式 $('input[type=checkbox]').removeAttr('checked','checked');//不選選,刪除屬性
但是測試結果發現,屢試不爽啊,選擇一次全選,再調用一次反選,再去調用全選就沒效果了。
難道是 removeAttr 的原因?還是‘幫客之家’使用過新的 jQuery 1.9.1版本。(還是說我要使用原生的javascript代碼來完成這項工作呢?)
這些都不是理由,理由應該 是自己沒有用好。不可能這麼牛比的框架這麼簡單的功能都不能實現(也不要輕意懷疑浏覽器的問題)
最終解決方案
還是到官網,搜索了’checkbox’,找到一文章,仔細查看了嚇,有一個類似的操作是
$('obj').attr('checked',true);
$('obj').prop('checked',true);
$('obj').attr('checked',false);
$('obj').prop('checked',false);
好了,擦亮你的眼睛,沒錯最後用的是 prop方法操作一切就OK啦。