我正在向一个复选框添加一个点击事件,该复选框将根据其检查状态显示/隐藏其他字段。我希望处理程序在加载时触发以设置初始页面结构。由于某种原因,triggerHandler不在该领域工作。如果我将其更改为“触发”,则处理程序将触发,但复选框状态也将更改。你能看出我做错了什么/为什么triggerHandler不起作用?
$('body').on("click", "#hdimage", function(){
console.log('hd');
if(!$('#hdimage').is(':checked')){
$('.sd-dim').hide();
} else {
$('.sd-dim').show();
}
});
$('#hdimage').triggerHandler('click');
答案 0 :(得分:10)
发生(as described in the docs)因为
使用
.triggerHandler()
创建的事件不会冒出DOM层次结构;如果它们没有直接由目标元素处理,它们什么都不做。
并且由于您使用.on()
方法的委托语法,该方法允许body
处理click
元素上发生的#hdimage
事件,因此该事件永远不会到达{ {1}} ..
答案 1 :(得分:0)
你的事件并没有绑定到“#hdimage”,它绑定到'body'
$(document).ready(function(){
$('#hdimage').on("click", function(){
alert("dostuff")
});
$('#hdimage').triggerHandler('click');
});