将元素添加到DOM后,jQuery.click无法正常工作

时间:2011-02-04 17:12:18

标签: javascript dom click jquery

我有一个简单的jQuery('div#star')。点击(功能。

最初加载DOM时,该函数会运行一次,但稍后我会在DOM中添加一个div#star,此时click函数无效。

我正在使用jQuery 1.4.4,据我所知,我不再需要使用.live或.bind了。 DOM中任何时候都不会有多个div#star。我尝试从id =“star”更改为class =“star”,但这没有帮助。

有关如何使其正常工作或无法正常工作的任何建议?

我在jQuery(document).ready中有.click,并且在外部js文件中,并且在将div添加到DOM之后都不起作用。

7 个答案:

答案 0 :(得分:11)

这适用于jQuery 2.0.3

$(document).on('click', '#myDiv', function() {
    myFunc();
});

答案 1 :(得分:9)

从jQuery 1.7开始,不推荐使用.live()方法。目前的建议是使用.on(),它提供了涵盖以前附加事件处理程序的方法的所有功能。简而言之,您不必再决定,因为on()可以做到这一切。

帮助中提供了文档,用于转换旧的jQuery事件方法.bind().delegate().live()

答案 2 :(得分:6)

您仍然需要使用直播活动。

http://api.jquery.com/live/

答案 3 :(得分:4)


.on('event', 'element', function(){ //code })

答案 4 :(得分:2)

您需要在此处使用livedelegate。自jQuery 1.4.4以来,这个部门没有任何改变。

尝试这样想:clickbind将事件附加到元素本身,因此当元素消失时,有关该事件的所有信息也会这样做。 live在文档级别附加事件,它包含有关要侦听的元素和事件类型的信息。 delegate做同样的事情,除了它将事件信息附加到你喜欢的任何父元素。

答案 5 :(得分:0)

用户“直播”方法$("div#star").live("click", function() {});

Doc

答案 6 :(得分:0)

您可以在:上使用委托代替

$(document).delegate('click', "selector", function() {
    //your code
});

我希望它会有所帮助。