Events jQuery.on()事件不';不适用于动态添加的元素

Events jQuery.on()事件不';不适用于动态添加的元素,events,jquery,dynamically-generated,Events,Jquery,Dynamically Generated,我在做一个项目,当用户点击一个按钮时,一个带有按钮的整个div被动态插入,在这个div中有一个按钮,当用户点击它时,它会做一些其他的事情,比如提醒一些事情 问题是,当我按下动态添加的div中的按钮时,什么都没有发生。事件根本没有发生 我尝试在HTML中添加该div,然后再试一次,事件成功了。我猜这是因为div是动态添加的 添加的div有一个classmainTaskWrapper,按钮有一个classcheckButton。 使用下面script.js文件末尾的.on()附加事件 这是我的密码:

我在做一个项目,当用户点击一个按钮时,一个带有按钮的整个div被动态插入,在这个div中有一个按钮,当用户点击它时,它会做一些其他的事情,比如提醒一些事情

问题是,当我按下动态添加的div中的按钮时,什么都没有发生。事件根本没有发生

我尝试在HTML中添加该div,然后再试一次,事件成功了。我猜这是因为div是动态添加的

添加的div有一个class
mainTaskWrapper
,按钮有一个class
checkButton
。 使用下面
script.js
文件末尾的
.on()
附加事件

这是我的密码:

helper\u main\u task.js:(这是添加div的对象,您不必阅读它,因为我认为这都是关于动态添加div的,但我会将它放在您需要的地方)


它看起来不像
div.mainTaskWrapper
存在

从(是的,它实际上是粗体的):

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

[……]

通过选择在附加委派事件处理程序时保证存在的元素,可以使用委派事件来避免频繁附加和删除事件处理程序

您可能希望将其绑定到
#taskswraper

$("#tasksWrapper").on('click', '.checkButton' , function(){
    alert("test text");
});

您需要指定一个启用了
的选择器(作为参数),以使其行为类似于旧的
委托
方法。如果不这样做,则事件将仅链接到当前匹配
div.mainTaskWrapper
(尚不存在)的元素。您需要在添加新元素后重新分配事件,或者将事件添加到已存在的元素,如
#taskswraper
或文档本身


请参阅上的“直接和委派事件”。

我知道这是一篇老文章,但可能对任何遇到

你可以试试:

jQuery('body')on.('DOMNodeInserted', '#yourdynamicallyaddeddiv', function () {
//Your button click event
});

这里有一个简单的例子-

我刚刚读了标题,你试用过jQuery的.live吗method@yngum:
.live
被弃用,取而代之的是
。on
@yngum
。live
被弃用,取而代之的是
。on
他们正在谈论另一个事件处理程序:
$(“div.maintaskawapper”)。on('click','checkButton',…)
$("#tasksWrapper").on('click', '.checkButton' , function(){
    alert("test text");
});
jQuery('body')on.('DOMNodeInserted', '#yourdynamicallyaddeddiv', function () {
//Your button click event
});