在重新加载页面的一部分后,是否有相当于$(document).ready的初始化?

Nic*_*int 3 jquery

我有以下非常标准的过程:

  1. 我初始化我的页面$(document).ready.这包括将事件绑定到表中的元素.
  2. 然后通过ajax调用动态刷新表的内容

我现在需要将事件重新绑定到表格内容.有这样做的标准方法吗?即部分页面DOM更新$(document).ready后是否存在等效的火灾?

谢谢.

kar*_*m79 14

使用live查看事件委派.来自文档:

绑定"实时"事件时,它将绑定到页面上的所有当前和未来元素(使用事件委派).例如,如果您将实时点击绑定到页面上的所有"li"元素,那么稍后会添加另一个li - 该click事件将继续适用于新元素(这不是bind的情况,必须重新绑定所有新元素).

一个例子:

$('#myTable td').live("click", function() {
    alert('hello!');
});
Run Code Online (Sandbox Code Playgroud)

这将保留绑定到表格上的单元格的事件,即使它已被替换.在现场手册说:

将处理程序绑定到所有当前和未来匹配元素的事件(如单击).

或者,您可以将绑定包装到一个函数中,并将其作为对更新表数据的方法的回调执行,例如:

function bindStuffToTable()
{
    $('#myTable td').click(function() {
       alert('Hello!');
    });
}

$('#myTable').load('/some/link', bindStuffToTable);
Run Code Online (Sandbox Code Playgroud)

或者如果整个表被动态替换,则更有可能:

$('#someButton').click(function() {
    //replaces the contents of someDiv with the table generated by foo.php
    $('#someDiv').load('foo.php', bindStuffToTable);
});
Run Code Online (Sandbox Code Playgroud)