【问题标题】:jQuery load() from within ajaxComplete() callback causing multiple loadsajaxComplete() 回调中的 jQuery load() 导致多次加载
【发布时间】:2010-11-27 23:55:34
【问题描述】:

我已经盯着这个看了一段时间了,我完全被难住了。为此,您需要 firebug,查看 AJAX 请求。每次点击下一个和上一个后,它们似乎都在成倍增加,直到加载速度太慢:

http://www.ftsdev.com/freegreen/virtual-tour-prototype/virtual-tour.html

所有的 JavaScript 源代码都在:

/freegreen/virtual-tour-prototype/js/virtual-tour.js

要查看的函数:

launchVirtualTour()
$('#vt-next').one('click',function()
$('#vt-prev').one('click',function()

ajaxComplete() 被调用时,我会检查在回调函数之外针对Array 加载的文件。这使我可以确定它是该系列中的第一个元素还是最后一个元素,以便我可以相应地隐藏PreviousNext 按钮。我感觉问题出在第 80-82 行的某个地方,我将1 添加到存储在indexInArray 中的inArray() 值。

我已经四处搜索,但找不到任何类似的情况,非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: javascript jquery ajax load methods


    【解决方案1】:

    我简单地试用了该页面。从代码的快速浏览和我的直觉反应来看,看起来您并没有取消绑定以前绑定的点击事件。据我所知,这是您的错误的流程:

    1. 用户单击以调出幻灯片
    2. 您绑定下一个/上一个点击事件
    3. 用户点击周围,使用下一个/上一个按钮
    4. 用户点击退出当前幻灯片
    5. 用户点击进入另一个幻灯片
    6. 您绑定下一个/上一个点击事件
    7. 用户四处点击,使用下一个/上一个按钮,导致内容被调用两次

    当用户点击第一个幻灯片放映时,您需要取消绑定点击事件。或者不要在第 6 步中绑定。

    【讨论】:

    • 非常感谢Sam,明天早上我会根据上面的第一件事尝试调试,然后告诉你进展如何。
    • 哈,我刚试了一下,效果很好。我将事件移到 ajaxComplete 之外并使它们成为实时事件,以便它们附加到 AJAX 加载内容的内容并且它起作用。非常感谢这个 Sam,我从没想过我能这么快解决这个问题!
    • 很高兴听到凯文。 :-) 祝你好运!
    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多