jQuery" on"不会触发加载ajax的内容

时间:2014-01-17 09:01:42

标签: jquery html ajax

当我使用$ .get()检索html时,html包含输入,textarea等表单字段。我希望将更改,粘贴和按键事件附加到这些控件,但这些事件不会被触发。 jQuery文档指出,在使用$ .get()检索html之前,至少有一个控件需要出现在html中。或者,您可以使用不需要任何控件的文档元素,但这会产生重大性能问题,因此在调用ajax之前,我会在页面上放置一个隐藏控件。这是我的HTML:

<div id="divAdminContent">
  <form id="frmAdmin">
    <input type="text" style="display:none" />
  </form>
</div>

以下是我如何附加“on”:

$("#frmAdmin :input").on("change paste keypress", function (e)
{
  // Do something...
});

1 个答案:

答案 0 :(得分:5)

您需要event delegation使用on(),当您的事件绑定代码执行时,您尝试绑定事件的元素不存在。

$("#frmAdmin").on("change paste keypress", ":input", function (e)
{
  // Do something...
});

委派活动

  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免经常附加和删除事件处理程序,jQuery doc