复选框上的jquery触发器更改事件

时间:2013-04-17 09:08:16

标签: javascript jquery

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

像这样(我点击按钮时运行triggerChange):

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

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

当我运行上面的代码时,我收到此错误:&#34; 触发器不是函数&#34;。

5 个答案:

答案 0 :(得分:24)

trigger is not a function错误消息表明其他内容正在发挥作用。根据这个SO问题:

What happens when a jQuery selector wasn't found?

no.good.at.coding说:

  

请注意,您必须确保选择器是jQuery对象!   否则,您可能会收到错误消息,指示“触发器不是a   功能”。

你可能忘记了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();

答案 1 :(得分:4)

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

例如,可以按如下方式分配点击处理程序:

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

只需运行以下命令即可触发click事件本身: $('#mything').click();

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

答案 2 :(得分:1)

我认为从1.9.1开始的首选方法就是&#39; on&#39;。特别是如果您使用动态添加的复选框。

假设你有一个id为id =&#39; divCOntent&#39;在它上面是一个id =&#39; cballaut&#39;的复选框,你可以这样做

$('#divcontent').on('click', '#cballaut', function (e) {
                    alert(this.checked);
                });

答案 3 :(得分:0)

使用prop方法。

$('#myCheck').prop('checked', true);
$('#myCheck').prop('checked', false);

答案 4 :(得分:0)

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

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

或更改复选框checked

$('#ceckBoxId').prop('checked', true);
$('#ceckBoxId').prop('checked', false);