设置$ .prop()而不触发更改

时间:2012-02-03 21:50:04

标签: jquery

<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
    });
});

3 个答案:

答案 0 :(得分:20)

您所描述的是默认功能。从javascript更改元素不会触发更改事件。

http://jsfiddle.net/8JsP4/

请注意,如果单击示例中的复选框,您会收到提醒,但如果单击该按钮,则无法提醒。

答案 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侦听器,然后在设置属性后再绑定它。