添加元素动态后的JQuery绑定事件

时间:2014-02-01 13:09:18

标签: javascript jquery html events

我在动态添加元素后遇到问题它没有click事件,所以我有以下内容:

$(".myclass > li").click(function () {
    ...
});

所以基本上当我点击LI元素的时候应该发生一些事情并且它有效。

但是当我向myclass添加一个新的LI元素时,这个新元素不会调用这个函数。

我的问题如何将这个新元素重新绑定或绑定到此函数..?

因为当我点击它们时其他元素可以工作,但只有新元素没有...我想这是绑定发生在回发或somethnig但在我的情况下没有回发:/

3 个答案:

答案 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