我在动态添加元素后遇到问题它没有click事件,所以我有以下内容:
$(".myclass > li").click(function () {
...
});
所以基本上当我点击LI元素的时候应该发生一些事情并且它有效。
但是当我向myclass添加一个新的LI元素时,这个新元素不会调用这个函数。
我的问题如何将这个新元素重新绑定或绑定到此函数..?
因为当我点击它们时其他元素可以工作,但只有新元素没有...我想这是绑定发生在回发或somethnig但在我的情况下没有回发:/
答案 0 :(得分:5)
您需要使用Event Delegation。您必须使用委托事件方法来使用.on()。
即
$(document).on('event','selector',callback_function)
在你的情况下
$(document).on('click', '.myclass > li', function () {
...
});
如果您想申请所有列表项目,请执行以下操作:
$(".myclass").on('click', '> li', function () {
...
});
答案 1 :(得分:1)
需要使用event delegation来支持动态元素
$(".myclass").on('click', '> li' function () {
...
});
答案 2 :(得分:0)
由于在绑定事件后添加了元素,因此它没有附加处理程序,并且bind
函数不会侦听可能添加的任何新元素。
因此,您需要使用事件委派。当事件触发时,它将一直冒泡到父文档。使用jQuery .on()
函数,您可以侦听从目标中冒出的事件。
在您的情况下,您应该使用以下内容:
$(parent).on("click", "li", function() { ... });
上述内容将侦听click
个元素上发生的li
个事件,并将其冒充到parent
。事件处理程序this
内部将引用事件触发的li
元素。如果您不了解父母,您可以听document
。
您可以详细了解.on()
函数here。