Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery-更改事件上的复选框不';如果使用JQuery进行检查,则不会触发_Jquery_Html - Fatal编程技术网

JQuery-更改事件上的复选框不';如果使用JQuery进行检查,则不会触发

JQuery-更改事件上的复选框不';如果使用JQuery进行检查,则不会触发,jquery,html,Jquery,Html,我有一个勾选所有复选框的功能。我使用JQuery来实现这一点 但是我还有一个on change函数,它将类切换到包装器div: $('input[type="checkbox"]').on('change', function(){ $(this).closest('div').toggleClass('highlight'); }); 该函数在我单击复选框时运行,但在我单击Check all时不会运行 有没有办法使用JQuery手动触发事件?还是有更好的解决方案 谢谢 编辑: 以下是

我有一个勾选所有复选框的
功能。我使用JQuery来实现这一点

但是我还有一个
on change
函数,它将类切换到包装器div:

$('input[type="checkbox"]').on('change', function(){
    $(this).closest('div').toggleClass('highlight');
});
该函数在我单击复选框时运行,但在我单击
Check all
时不会运行

有没有办法使用JQuery手动触发事件?还是有更好的解决方案

谢谢

编辑:

以下是简化的HTML:

<a id="check_all">Check All</a>
<div>
    <input type="checkbox" name="cb" value="abc">ABC<br>
</div>
<div>
    <input type="checkbox" name="cb" value="pqr">PQR<br>
</div>
<div>
    <input type="checkbox" name="cb" value="xyz">XYZ<br>
</div>

您可以试试这个

$(document).on('change','input[type="checkbox]' ,function(){
     // $this will contain a reference to the checkbox
      var $this = $(this);   
    if ($this.is(':checked')){//To CHECK CHECK BOX IS CHECKED OR NOT
         $(this).closest('div').toggleClass('highlight');
    }
});

希望有帮助,

这将触发
更改
事件,但仅在您首先绑定它之后

$('input[type="checkbox]').trigger('change');

单击check all之后,您应该像这样调用change()事件

$(document).ready(function(){
    $("input[type='checkbox']").on('change', function(){
        $(this).closest('div').toggleClass('highlight');
    });

    $("#check_all").on('click', function(){
        $("input[type='checkbox']").prop('checked', true).change();
    });
});

与visnu的答案几乎相同,但直接调用click()将触发jQuery绑定的所有单击事件。如果你演示这个,你会看到它也会取消勾选框,而他的答案只是删除突出显示,而他们仍然点击

$(document).ready(function(){
    $("input[type='checkbox']").on('change', function(){
        $(this).closest('div').toggleClass('highlight');
    });

    $("#check_all").on('click', function(){
        $("input[type='checkbox']").click();
    });
});

检查对您的代码进行的修改:


你可以使用触发器,或者你可以在这里发布更多的代码,这样我/我们可以帮助你更多。你怎么知道函数没有运行?您是否已使用调试器进行了检查?@Andrei我已使用
console.log()
进行了检查,它仅在我直接单击复选框时运行@等等,我将创建JSFiddle@BeNdErR我已经添加了JSFiddle。对不起,我重写了代码来简化它。真的没有语法错误。对不起,我不是这个意思。你可以检查这个,我刚刚创建了完美!只要一个字就行了!非常感谢好先生!或者,您可以执行
$(“输入[type='checkbox']”)。单击()
也会取消选中你的复选框(虽然这个答案会保持选中状态,但会取消高亮显示)。谢谢你的时间,但是他的答案不起作用。你可以查看visnu的答案,找到最完美的答案。我对JQuery非常陌生,所以我不确定什么是绑定。稍后我会看一看。但就这一次而言,visnu的答案很好。@DarcCode,当您使用
.on()
时,您将绑定或附加一个事件到一个元素。因此,由于我使用
on()
,这是否意味着我的代码已经绑定了?@DarcCode完全正确,但您只能在绑定后使用
触发器,否则它不会触发任何内容。
$(document).ready(function(){
    $("input[type='checkbox']").on('change', function(){
        if (this.checked)
            $(this).closest('div').addClass('highlight');
        else 
            $(this).closest('div').removeClass('highlight');
    });

    $("#check_all").on('click', function(){
        var item = $("input[type='checkbox']")
        item.prop('checked', !item.prop('checked')).change();
    });
});