【发布时间】:2011-08-11 22:12:51
【问题描述】:
简单的功能,我想根据更改顶级复选框来切换选中/取消选中复选框。
问题在于切换/单击事件处理程序存在固有问题。如果您尝试将这些处理程序绑定到输入复选框,则该框的默认检查行为将失败。
所以,我尝试以两种不同的方式之一使用更改处理程序。
$('input.all_neighborhoods').change(function(){
if($(this).not(':checked')){
$(this).closest('li').siblings('li').find('input[name=neighborhood_id]').attr('checked','checked');
}
else{
$(this).closest('li').siblings('li').find('input[name=neighborhood_id]').removeAttr('checked');
}
});
在这里,第一个更改按您的预期工作。所有同级复选框都被选中并选中。但是,当我再次单击取消选中时,什么也没有发生。事件处理程序不起作用。
然后我尝试了这个:
$('input.all_neighborhoods').change(function(){
$(this).attr( 'checked', $(this).is( ':checked' ) ? $(this).closest('li').siblings('li').find('input[name=neighborhood_id]').attr('checked','checked'): $(this).removeAttr('checked').closest('li').siblings('li').find('input[name=neighborhood_id]').removeAttr('checked') );
});
在这里,兄弟复选框有效地切换。但是,主开/关开关复选框保持选中状态。
这里的问题是否与他们都是兄弟姐妹而主复选框不是父级这一事实有关?
【问题讨论】:
-
嘿 Brendan,也许您也可以提供一些 HTML 标记 - 我很难在没有看到结构的情况下可视化正在发生的事情。如果您也有实时链接,那将非常容易解决。
标签: jquery checkbox click toggle