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