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