【问题标题】:Rebinding functions on dynamic content using jQuery and AJAX使用 jQuery 和 AJAX 对动态内容重新绑定函数
【发布时间】:2009-02-03 11:29:53
【问题描述】:

我正在为网站构建后端管理面板,但在构建页面时使用 jQuery 和 AJAX 代码时遇到问题。

在加载时,我将操作绑定到某些表格字段,允许用户添加或删除颜色或大小。当他们提交表格时,我清空表格并使用 AJAX 生成一个新表格,然后将新表格放入表格中。

不幸的是,新表单(如我所料)不受 $(document).ready 函数的影响。我想知道是否有一种方法可以重新调用 document.ready 函数以将操作绑定到页面中的新元素,或者在不通过 document.ready 函数的情况下调用 jQuery 函数。

我可以用 vanilla javascript 重写 jQuery 函数并以这种方式调用它,但我更愿意尽可能重用 jQuery 代码。

我找到了一些关于如何使用 ASP.NET 和 UpdatePanels 来做这件事的东西,但是这个网站是用 PHP 编写的,它使用基本的 AJAX 查询来插入数据库,重新获取结果然后建立结果表。

有什么想法吗?

【问题讨论】:

    标签: ajax asynchronous jquery


    【解决方案1】:

    您是否尝试过使用live events?这仅适用于 1.3。

    对于以前的版本,您可以使用live query 插件。有了这个,您可以运行匹配和不匹配侦听器(在匹配发生时运行代码)。您还可以使用 livequery.run 方法强制评估绑定。

    更新:

    对于现在发现此问题的任何人,live 方法从 1.7 开始已被弃用。 Live 有一些主要的唠叨问题,因此被更强大的功能所取代:on。即使您还没有使用 1.7,您也应该高度考虑至少使用 delegate (jquery 1.4.2),因为 live 有一些严格的限制

    【讨论】:

    • 完美,这正是我想要的。没有意识到我使用的是 1.2.6。将 .click(function ()) 更改为 .live("click", function()) 并且它运行良好。谢谢!
    • 这个新功能的性能不是很好。小心包含太多。
    • 这只是为我节省了一整夜的黑客攻击......希望我能 +10!
    【解决方案2】:

    现场活动似乎是最好的答案;但如果不是,您应该简化$(document).ready() 函数以使其调用初始化函数。稍后,在加载您的 AJAX 内容后,您只需再次调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多