6

所以我有这个 jquery-App 我绑定的地方:

  • 我所有的“.btn-delete”元素的“删除功能”
  • 我所有的“.btn-add”元素的“添加功能”

等等。在我的 webapp 的一个 div 中,我对内容进行异步加载,包括我想要绑定“删除”和“添加”功能的元素。这些元素也有一个“btn-delete”或“btn-add”类——但由于内容是异步加载的,因此如果不做任何事情,事件就不会绑定到它们。

所以我听说使用 .on('click' ...) 函数可以在异步加载内容后立即触发,我可以重新绑定这些函数。但是我必须对我想使用的每个功能都这样做。那是我不想要的。

我想要的是有一个通用函数,它将所有先前定义的事件函数重新绑定到我加载它们的 div 容器中的每个元素。

有没有办法做类似的事情:

“将所有事件函数重新绑定到 div-id xyz 中的异步加载元素”

如果我不必手动为每个回调重新绑定每个函数,那会让我的生活变得更加轻松。

4

1 回答 1

16

如果您使用委托事件处理,则永远不必重新绑定。

$('body').on('click', '.btn-delete', function(ev) {
  // delete ...
});

这设置了一个事件处理程序,当它们从任何元素冒泡到主体时,随时捕获“单击”事件。它作用于与给定选择器匹配的元素的任何“点击”。按钮最初是在那里还是动态添加的并不重要。

您不必将处理程序放在<body>元素上;它们可以进入容器的任何层。

于 2013-10-25T15:12:36.730 回答