[英]Checkbox select/deselect trigger works first time but fails on subsequent attempts
我有一部分基於html data- *標簽的jQuery,可以通過一組搜索表單中的復選框工作。
單擊“所有”復選框,其余所有元素都將變為未選中狀態(每次都正常運行,沒有問題)。
現在,如果選擇了“全部”,然后單擊其他選項,則“全部”應變為未選中狀態,這也將按預期工作。
但是,如果您願意,可以取消選中“所有”復選框,然后默認應選中其余復選框,以便取消選擇所需的結果。
如果您到目前為止尚未更改任何其他設置,則這將首次生效,但是如果選中了其他復選框,則選中“全部”,或者如果您單擊了“全部”按鈕,則選擇失敗,然后再次取消選擇。
關於它的最新想法將不勝感激(我嘗試使用控制台來發現它沒有在做什么,但是到目前為止,它沒有提供任何線索)。
下面的例子。
html...
<input data-sel-group='group1' id='group1_all'/>
<input data-sel-group='group1' id='group1_1'/>
<input data-sel-group='group1' id='group1_2'/>
/html...
jQuery...
$('input:checkbox').on('click',function(){
var sel = $(this).data('sel-group'),
all = $('#'+sel+'_all'),
chk = all.is(':checked');
if($(this).attr('id')==all.attr('id')){
if(chk){
$('input[data-sel-group="'+sel+'"][id!="'+sel+'_all"]').attr('checked', false);
}else{
$('input[id!="'+sel+'_all"][data-sel-group="'+sel+'"]').attr('checked', true);
}
}else{
all.attr('checked', false);
if($('input[data-sel-group="'+sel+'"]:checked').length<=0){
all.attr('checked', true);
}
}
})
您應在設置選中復選框屬性時使用延遲執行。 請參考這個博客
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.