据我所知,click()
方法对我不起作用,因为我点击的元素在页面加载(DOM ready)上不存在。
我发现许多答案建议使用.live('click',function(){...})
。这很棒!
但是,从{jQuery 1.7
开始,.live()
已弃用
所以,我尝试使用.on('click',function(){...})
,但它不起作用(与.click()
的行为相同。
有没有人知道为什么,或者我可以做什么来.on()
使用.live()
(哪个有效)?
答案 0 :(得分:21)
由于on()
替换了bind()
和live()
,您需要传递第三个参数才能使用事件委派(换句话说,让它像旧的一样工作live()
):
$('#container').on('click', '.element', function(){ });
答案 1 :(得分:7)
你应该可以使用这样的格式:
$(document).on('click','element', function(){...});
其中element
是要将click事件绑定到的元素。使用document
是一种最糟糕的情况,因为理想情况下,您希望使用DOM加载时存在的元素,该元素在DOM层次结构中更接近于将动态加载的元素。
来自jQuery .on()文档:
事件处理程序仅绑定到当前选定的元素;他们 在您的代码调用.on()时页面上必须存在。 要确保元素存在且可以选择,请执行事件 绑定在文档就绪处理程序中的元素 页面上的HTML标记。如果将新HTML注入页面, 选择元素并在新HTML之后附加事件处理程序 放入页面。