如何将jquery事件重新绑定到通过ajax加载的内容,而不是为每个事件/类执行此操作

时间:2013-10-25 15:10:49

标签: javascript jquery ajax asynchronous bind

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

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

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

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

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

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

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

如果我不需要手动重新调整每个函数,那么这将使我的生活变得更加轻松。

1 个答案:

答案 0 :(得分:16)

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

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

设置一个事件处理程序,当它们随时从任何元素冒泡到正文时捕获“click”事件。它作用于与给定选择器匹配的元素中的任何“单击”。无论按钮最初是在那里还是动态添加都没关系。

您不必将处理程序放在<body>元素上;他们可以去任何一层容器。