Javascript .on不能代替live工作

Javascript .on不能代替live工作,javascript,jquery,event-handling,live,Javascript,Jquery,Event Handling,Live,我已经知道了一段时间了。on应该取代。live,但我从来没能让它工作 我试过: $(this).on('click', function(){ // Do something... }) $(this).on({ click: function(){ // Do something } }) 但这对我从来都不管用 特别是当我试图将事件绑定到页面上最初可能不存在的元素时 有人能帮我彻底澄清一下吗 我使用的是最新版本的jquery。您需要指定哪些元素 $element.on('

我已经知道了一段时间了。on应该取代。live,但我从来没能让它工作

我试过:

$(this).on('click', function(){
    // Do something...
})

$(this).on({
    click: function(){ // Do something }
})
但这对我从来都不管用

特别是当我试图将事件绑定到页面上最初可能不存在的元素时

有人能帮我彻底澄清一下吗


我使用的是最新版本的jquery。

您需要指定哪些元素

$element.on('click', '.foo', handler)
处理程序
绑定到
$element

内的所有活动
.foo

$(".parent").on('click', ".child", function(){
    // Do something...
})

您使用的语法的工作原理与
bind
类似。要将事件绑定到所有将来的元素,请使用上述语法。

对于动态生成的元素,您需要像

$(document).on('click','YOUR SELECTOR', function(){

});

这是因为文档是元素的容器,可以查看DOM的更改。对于每个操作,都需要一个显式的事件侦听器。如果将某物绑定到$(this),则在删除它时,它(选择器)可能不存在

你需要阅读文档
.on()
替换了
live
bind
delegate
,这实际上取决于参数/上下文的作用!顺便说一句,
$(this).live()
根本不可能工作,除非
这个
是通过调用
$('selector')
创建的。这可能是一个老生常谈的答案,但官方jQuery文档对此解释得非常好。阅读“.on()”函数的文档,特别是“直接和委派事件”标题下的部分。它解释了它是如何工作的。但是,他通常不应该使用
文档
而应该使用尽可能靠近新添加元素的父元素。我只是在发布ThiefMaster之前添加了一个编辑;)但我现在看不到编辑:(.Yes最近的元素选择器实际上更正确。@Mahbub by nearest element你是说最近的非动态添加元素吗?Yes当然可以@imperium2335,否则它不会工作。最安全的方法是使用文档,因为你不能删除此元素:)