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