32

是否可以使用 javascript/jquery 在复选框上触发更改事件?

像这样的东西(我点击一个按钮运行 triggerChange ):

<label><input type="checkbox" id="chk"/>Label for chk</label>

<script>
function triggerChange(){
    $("#chk").trigger("change");
}
</script>

当我运行上面的代码时,我得到这个错误:“触发器不是函数”。

4

5 回答 5

31

trigger is not a function错误消息表明还有其他事情在起作用。根据这个SO问题:

找不到 jQuery 选择器时会发生什么?

no.good.at.coding说:

但是请注意,您必须确保选择器是一个 jQuery 对象!否则,您可能会收到指示“触发器不是函数”的错误。

您可能忘记了 jQuery?


至于你的实现,你应该很好地使用它。但trigger应该用于触发已经通过 jQuery 附加的元素上的事件方法。查看我的演示:

小提琴:
有点击事件:http: //jsfiddle.net/fS4R5/1/
没有点击事件:http: //jsfiddle.net/fS4R5/2/

HTML:

<label><input type="checkbox" id="chk"/>Label for chk</label>

JS:

function triggerChange(){
    $("#chk").trigger("change");
}

$("#chk").change(function() {
   alert("triggered!"); 
});

triggerChange();
于 2013-04-17T09:14:22.933 回答
6

在 jQuery 中,您通常可以通过调用它的 eventhandler 方法来触发事件,而无需任何函数参数。

例如,点击处理程序可以这样分配:

$('#mything').click(function(e){dostuff});

点击事件本身可以通过简单的运行来触发: $('#mything').click();

我怀疑这可以为 jQuery 中的每个现有事件完成。

于 2013-04-17T09:12:16.533 回答
4

确保启用输入类型复选框,以防禁用触发器不会触发事件

//fire event 
$('#ceckBoxId').click();
$('#ceckBoxId').trigger('click');

或更改复选框checked

$('#ceckBoxId').prop('checked', true);
$('#ceckBoxId').prop('checked', false);
于 2019-08-20T08:18:39.923 回答
2

我认为自 1.9.1 以来的首选方法是“开”。特别是如果您使用动态添加的复选框。

假设你有一个 id='divCONntent' 的 div 并且上面有一个 id='cballaut' 的复选框,你可以这样做

$('#divcontent').on('click', '#cballaut', function (e) {
                    alert(this.checked);
                });
于 2013-04-17T09:13:52.090 回答
0

使用道具方法。

$('#myCheck').prop('checked', true);
$('#myCheck').prop('checked', false);
于 2015-07-03T03:14:22.497 回答