我有以下非常标准的流程:
$(document).ready
中初始化了我的页面。这包括将事件绑定到表中的元素。我现在需要将事件重新绑定到表格内容。有这样做的标准方法吗?即在部分页面DOM更新后是否会触发相等的$(document).ready
?
感谢。
答案 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>