我有一个简单的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之后都不起作用。
答案 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)
您仍然需要使用直播活动。
答案 3 :(得分:4)
试
.on('event', 'element', function(){
//code })
答案 4 :(得分:2)
您需要在此处使用live
或delegate
。自jQuery 1.4.4以来,这个部门没有任何改变。
尝试这样想:click
和bind
将事件附加到元素本身,因此当元素消失时,有关该事件的所有信息也会这样做。 live
在文档级别附加事件,它包含有关要侦听的元素和事件类型的信息。 delegate
做同样的事情,除了它将事件信息附加到你喜欢的任何父元素。
答案 5 :(得分:0)
用户“直播”方法$("div#star").live("click", function() {});
答案 6 :(得分:0)
您可以在:上使用委托代替
我希望它会有所帮助。 $(document).delegate('click', "selector", function() {
//your code
});