上一篇講到:第一次點擊全選按鈕input顯示對勾,第二次則不顯示,需要用prop來添加checked屬性。
但是用prop會出現一個問題,對勾顯示,而checked屬性不會被添加(比如:$("input[type='checkbox'][name='che']").attr("checked") 獲取結果為undefined),這樣就無法通過if語句判斷是否選中,從而實現反選功能。
我們先來理一下思路:既然“反選”功能的實現是通過判斷是否有checked屬性,所以當每次執行“全選”“反選”功能時,把checked屬性都清除掉,這樣之前重復添加的checked屬性每次都會進行清除。示例代碼如下:
//全選$("#quanxuan").click(function(){$("#tb").find("input[type='checkbox'][name='che']").removeAttr("checked");$("#tb").find("input[type='checkbox'][name='che']").prop("checked", true);});//反選$("#fanxuan").click(function(){$("#tb").find("input[type='checkbox'][name='che']").each(function(){if($(this).is(":checked")){$(this).removeAttr("checked");$(this).prop("checked",false);}else{$(this).removeAttr("checked");$(this).prop("checked","checked");}});});目前只能想到這種冗余的辦法了,日后遇到新的解決方法再補充。
以上所述是小編給大家介紹的關于input全選反選惡心的異常情況,非常不錯,具有參考借鑒價值,希望對大家有所幫助!
新聞熱點
疑難解答