是否可以使用javascript / jquery触发复选框上的更改事件?
像这样(我点击按钮时运行triggerChange):
<label><input type="checkbox" id="chk"/>Label for chk</label>
<script>
function triggerChange(){
$("#chk").trigger("change");
}
</script>
当我运行上面的代码时,我收到此错误:&#34; 触发器不是函数&#34;。
答案 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);