jQuery脚本不再在部分刷新的元素上运行

时间:2010-08-26 19:14:39

标签: javascript jquery partial-page-refresh

我有许多jQuery脚本,用于选择我运行部分页面刷新的区域内的元素。

我正在使用此css技巧代码段来刷新页面的这一部分:

$('#refreshbutton').click(function() {

 var url = "http://myUrl.com/indexTest.php?ID=" + Math.random(); 

 setTimeout(function() {
        $("#maindisplay").load(url+" #maindisplay>*","");
 }, 100); 
});

问题是#maindisplay中的元素被更改,因此被认为是dom中的新元素。由于选择这些元素并将函数附加到它们的脚本在domready上运行而不是在部分刷新期间运行,因此这会产生问题。

到目前为止,在部分刷新之后,我一直无法找到将脚本重新附加到#maindisplay中的元素的方法。

我的问题是:将脚本重新附加到页面的刷新区域的最佳方法是什么。

感谢您的任何建议。

3 个答案:

答案 0 :(得分:1)

您需要使用live()功能附加点击处理程序。

答案 1 :(得分:0)

load()不接受回调函数,因为它是第二个参数吗?为什么不将事件处理程序重新附加到具有该函数的元素?

$('#result').load('ajax/test.html', function() {
  //reattach event handlers here.
});

答案 2 :(得分:0)

您可以考虑以下选项:

  • 将附件放入函数并在页面刷新上调用该函数
  • 使用.live()功能
  • 使用.delegate()功能
  • 将Javascript引用放在刷新引用中的功能中,以便它作为刷新的一部分执行
  • 将函数放入回调
  • 使其成为你的setTimeout
  • 的一部分
  • 我没想到的其他一些创造性方法......

请注意:我会查看.delegate(),并在最近的版本中添加了上下文选择(例如,在1.4.2中提供)。