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

时间:2009-06-17 10:27:07

标签: jquery

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

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

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

    感谢。

2 个答案:

答案 0 :(得分:14)

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

  

当你绑定一个“实时”事件时,它会   绑定所有当前和未来   页面上的元素(使用事件   代表团)。例如,如果你绑定   实时点击所有“li”元素   页面然后在a处添加了另一个li   以后的时间 - 点击事件会   继续为新元素工作   (这不是绑定的情况   必须重新绑定所有新元素。)

一个例子:

$('#myTable td').live("click", function() {
    alert('hello!');
});

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

  

将处理程序绑定到事件(如   点击)了解所有当前和未来 -   匹配元素。

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

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

$('#myTable').load('/some/link', bindStuffToTable);

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

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

答案 1 :(得分:1)

如果我收到部分更新,我再次使用$(document).ready()...

这是AJAX响应

<script type="text/javascript">
    $(document).ready(function() {
        alert($('div.partialresponse').html());
        //Alerts 'content'
    });
</script>
<div class="partialresponse">
   content
</div>