0

我有许多 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 中的元素的方法。

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

谢谢你的任何建议。

4

3 回答 3

1

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

于 2010-08-26T19:23:02.083 回答
0

load() 不将回调函数作为第二个参数吗?为什么不将事件处理程序重新附加到具有该功能的元素?

$('#result').load('ajax/test.html', function() {
  //reattach event handlers here.
});
于 2010-08-26T19:19:37.397 回答
0

您有以下我能想到的选项:

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

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

于 2010-08-26T19:32:25.403 回答