触发器时,jquery triggerHandler不起作用

时间:2013-04-29 23:10:29

标签: event-handling jquery jquery-triggerhandler jquery-trigger

我正在向一个复选框添加一个点击事件,该复选框将根据其检查状态显示/隐藏其他字段。我希望处理程序在加载时触发以设置初始页面结构。由于某种原因,triggerHandler不在该领域工作。如果我将其更改为“触发”,则处理程序将触发,但复选框状态也将更改。你能看出我做错了什么/为什么triggerHandler不起作用?

$('body').on("click", "#hdimage", function(){
    console.log('hd');
    if(!$('#hdimage').is(':checked')){
        $('.sd-dim').hide();
    } else {
        $('.sd-dim').show();
    }
});
$('#hdimage').triggerHandler('click');

2 个答案:

答案 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');
});