<li>
<input type="checkbox" id="master" />
<ul>
<li>
<input type="checkbox" />
$('input').bind('change', function() {}); // exists elsewhere, cannot change
当我点击顶级输入时,我想为其所有孩子设置.prop('checked', true)
,但我想避免触发每个孩子的change
事件复选框
如何在不触发.prop('checked', true)
的情况下将change
设置为输入?
编辑:(扩展)
$('#master').click(function() {
$(this).parent().find('input').each(function(n, in) {
$(in).prop('checked', true); // this triggers a change event that I need to stop
});
});
答案 0 :(得分:20)
您所描述的是默认功能。从javascript更改元素不会触发更改事件。
请注意,如果单击示例中的复选框,您会收到提醒,但如果单击该按钮,则无法提醒。
答案 1 :(得分:1)
现在,您的选择器定位所有input
元素。您可以为主要复选框指定一个Id,其他复选框为通用类。
<li>
<input id="main-chk"type="checkbox" />
<ul>
<li>
<input class="children" type="checkbox" />
$('li:first').bind('change', function() {
$(this).find('li').prop('checked', 'checked');
}); // exists elsewhere, cannot change
答案 2 :(得分:0)
尝试取消绑定onchange侦听器,然后在设置属性后再绑定它。