8

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

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

2 回答 2

10

发生这种情况如文档中所述,因为

创建的事件.triggerHandler() 不会冒泡 DOM 层次结构;如果它们没有被目标元素直接处理,它们什么也不做。

并且由于您使用.on()方法的委托语法来body处理元素click上发生的事件#hdimage,因此该事件永远不会到达body..

于 2013-04-29T23:22:27.927 回答
0

您的活动未绑定到“#hdimage”,而是绑定到“body”

$(document).ready(function(){
    $('#hdimage').on("click", function(){
        alert("dostuff")
    });
    $('#hdimage').triggerHandler('click');
});
于 2013-04-29T23:22:01.137 回答