【问题标题】:effects of javascript not work in ajax replyjavascript 的效果在 ajax 回复中不起作用
【发布时间】:2012-01-07 04:48:16
【问题描述】:

我是 AJAX 的新手。我在互联网上搜索了很多,但只得到了基本的 AJAX 步骤。现在我正在使用 AJAX 编写代码,但我一直面临着一个常见问题。

当我在 HTML 页面的特定 id 中放置返回文本时,Javascript 效果不起作用。 CSS 工作正常,但像表格排序、jQuery 效果或任何其他效果这样的 Javascript 效果不起作用。我知道我在这里遗漏了一些概念。但没有得到任何有效的答案。

请建议我该怎么做?而这背后的概念是什么……

【问题讨论】:

    标签: javascript jquery ajax effect


    【解决方案1】:

    当您的 jquery 第一次运行并将事件绑定到页面上的元素时,您添加到 DOM(页面)的新 HTML 不存在。您可能正在使用 $("something").click(...) 或 .bind("click", ...)。而不是这些使用来自 jquery 的委托函数。 Delegate 通常比 live 更灵活、更快。例如,您不能在“实时”绑定中停止传播。

    Jquery Delegate

    Why Delegate is better than Live

    这里是另一个SO answer,解释了委托的好处

    【讨论】:

    • 实际上,如果您使用的是 jQuery 1.7.x forward,.on().delegate() 更受欢迎,.delegate() 正在被弃用。
    【解决方案2】:

    最有可能发生的情况是您的事件变得不受约束,因为您使用新元素更新了 DOM。最简单的解决方案是使用 live 方法绑定事件:http://api.jquery.com/live/

    或者您可以在插入到 DOM 之后简单地将事件重新绑定到元素,同样简单。

    编辑

    正如用户 kasdega 指出的那样,另一种选择是使用委托:http://api.jquery.com/delegate/Delegate 通过使用绑定的根元素作为上下文将事件重新绑定到将来可能出现的 DOM 元素。

    【讨论】:

    • 感谢您的快速回复。我正在访问你的链接。您能给我举一个“重新绑定”的第二种解决方案的例子吗?如果可以的话请...
    • .live() 可能有问题,一般首选 .delegate()。
    • kasdega 是的,委托是另一种选择。加了,谢谢@abhimanyu 我的意思是,您可以在将事件插入 DOM 后简单地重新绑定事件。这意味着一旦更新了 DOM,就必须重新调用插件(例如 tablesorter)。这取决于您如何设计应用程序,因为您需要将初始化代码组合在一起。
    • .on() 优于 .delegate()(根据其他对 kasdega 答案的评论)
    • 有没有办法在DOM更新时自动调用所有需要的js函数。
    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 2010-11-06
    • 2018-04-01
    • 2013-08-23
    • 2013-06-28
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多