简单的功能,我想根据更改顶层复选框切换选中/取消选中复选框。jQuery未能通过编程取消选中复选框
问题是切换/点击事件处理程序有固有的问题。如果您尝试将这些处理程序绑定到输入复选框,则该框的默认检查行为将失败。
因此,我尝试以两种不同方式之一使用Change处理程序。
$('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'));
});
在这里,兄弟复选框有效切换。但是,主开关复选框保持选中状态。
这里的问题与他们是否都是兄弟姐妹有关,而主复选框不是父级?
嘿布伦丹,也许你可以提供一些HTML标记 - 我很难在没有看到结构的情况下直观地看到发生了什么。如果您还有一个实时链接,那么这将使其很容易解决。 – Lev 2011-04-24 16:50:05