我正在尝试在多个对象上实现触发器,但无论我做什么,它只会触发集合中的第一个对象。我知道triggerHandler有这个限制,但现在应该触发。我认为,对于触发器,这将起作用!请帮忙!
这就是我目前所拥有的:
一堆具有相同类别的输入框(例如
input type="checkbox" id="checkX" class="allchecks" value="show" />`
)
然后是一个按钮,我想触发所有这些按钮并在每个
上运行点击处理程序<input type="button" value="select all" value="click me" id="button1" />
则...
$j('#button1').click(function(){
$j('.allchecks').each(function(){
if(!$j(this).is(':checked')){
$j(this).trigger('click');
}
}); // end each
}); // end click
似乎无论我做什么,只有第一个对象有它的绑定点击事件被触发。
非常感谢任何建议。
更新:出于沮丧,我编写了相同的代码,除了不使用每个循环我手动触发每个循环,它以相同的方式失败 - 它只触发第一个对象上的事件并停止。
更新:以下是绑定到输入的点击事件的示例:
$j('#checkx').click(function(){ /* do something */ }); //end click
更新:oops复制/粘贴错误,修复它。但它并没有减损这个问题。
答案 0 :(得分:1)
您的代码缺少)
:
if(!$j(this).is(':checked'){
请参阅fiddle
PS。您不需要.each
:
$j('#button1').click(function(){
$j('.allchecks:not(:checked)').trigger('click');
}); // end click
编辑您在多个元素上使用相同的ID,这是禁忌。它不起作用,现在你已经看到了原因,你再也不会这样做了; - )
$j('.allchecks').click(function(){ /* do something */ });
答案 1 :(得分:0)
您不需要触发点击事件来选中复选框,只需使用prop
方法将checked
设置为true即可。请参阅demo。
$('#button1').click(function(){
$('.allchecks').prop('checked', true);
});