jQuery on()方法不适用于附加元素

时间:2012-10-27 09:02:01

标签: jquery

我知道我应该使用on()方法来触发附加元素而不使用click(),所以:

$('#change_profile_img').on('click', function(){
alert(1);           
});

所以上面的代码在任何元素上都能正常工作,除非附加元素,例如,我附加:

$('.companylogo:first').append('<a id="change_profile_img" class="ic_change">CHANGE IMAGE</a>');    

在附加后,它不起作用,但在页面刷新后它可以正常工作。 我应该提到的另一件事是,我正在从一个模态页面进行追加,它会附加按钮和一切,但我不能再触发它了......

我会感激任何帮助。 感谢

5 个答案:

答案 0 :(得分:2)

这应该适合你:

$(".companylogo").on("click", "#change_profile_img", function() {
  alert(1);
});

答案 1 :(得分:1)

以这种方式使用

$(document).on('click','#change_profile_img', function(){
    alert(1);           
});

<强>更新

选中此DEMO

href代码

中缺少a

答案 2 :(得分:1)

您可以尝试在附加此类元素时委派click事件。

$('.companylogo:first')
    .append('<a id="change_profile_img" class="ic_change">CHANGE IMAGE</a>')
    .delegate('#change_profile_img', 'click', function(){
        alert(1);
});

答案 3 :(得分:0)

请试试这个:

function GetIt()
{ 
    $('#change_profile_img').on('click', function(){
        alert(1);           
    });
}

你可以在body onload和每个附加时间调用 GetIt()函数。

答案 4 :(得分:0)

我不知道为什么它不在这个页面上工作,但最后我通过清除问题解决了它! 我从一开始就把附加的元素放在页面上,显示='无',在模态上而不是附加它们,我只是show()编辑它们,现在一切正常,谢谢大家