我添加一个点击事件到一个复选框,这将显示/隐藏额外的字段取决于其检查状态。我希望处理程序在加载时触发以设置初始页面结构。由于某种原因,triggerHandler没有在字段上工作。如果我将其更改为'trigger',则处理程序将触发,但复选框状态也将改变。你能看到我做错了什么/为什么triggerHandler不会工作吗?
$('body').on("click", "#hdimage", function(){
console.log('hd');
if(!$('#hdimage').is(':checked')){
$('.sd-dim').hide();
} else {
$('.sd-dim').show();
}
});
$('#hdimage').triggerHandler('click');
发生这种情况(如文档中所述)是因为
用
.triggerHandler()
创建的事件不冒泡DOM层次;如果它们没有被目标元素直接处理,它们什么也不做。
并且由于您使用.on()
方法的委托语法,使body
处理发生在#hdimage
元素上的click
事件,该事件永远不会到达body
..
你的事件不是绑定到"# himage "而是绑定到" body "
$(document).ready(function(){
$('#hdimage').on("click", function(){
alert("dostuff")
});
$('#hdimage').triggerHandler('click');
});