12

据我所知,该click()方法对我不起作用,因为我单击的元素在页面加载时不存在(DOM 就绪)。

我发现很多答案建议使用.live('click',function(){...}). 这很好用!

但是,.live()从 jQuery 1.7 开始被贬值

所以,我尝试过使用.on('click',function(){...}),但它不起作用(与.click().

有谁知道为什么,或者我可以做些什么来使用.on()类似于.live()(哪个有效)?

4

2 回答 2

32

由于on()替换了bind()and live(),您需要传递第三个参数才能使用事件委托(换句话说,使其像旧的一样工作live()):

$('#container').on('click', '.element', function(){ });
于 2013-02-26T15:13:52.597 回答
10

您应该能够使用如下格式:

$(document).on('click','element', function(){...});

element您要将点击事件绑定到的元素在哪里。使用document是一种最坏的情况,因为理想情况下,您希望使用加载 DOM 时存在的元素,该元素在 DOM 层次结构中更接近将动态加载的元素。

来自 jQuery .on()文档:

事件处理程序仅绑定到当前选定的元素;当您的代码调用 .on() 时,它们必须存在于页面上。为确保元素存在并且可以被选择,请在页面 HTML 标记中的元素的文档就绪处理程序内执行事件绑定。如果将新 HTML 注入页面,请在将新 HTML 放入页面后选择元素并附加事件处理程序。

于 2013-02-26T15:14:29.163 回答