【问题标题】:jQuery/Javascript - Delay the execution of a function until another one is completejQuery/Javascript - 延迟一个函数的执行,直到另一个函数完成
【发布时间】:2012-06-21 14:58:44
【问题描述】:

我正在尝试将 php 页面加载到元素中,然后将滑块应用于加载的内容。
问题是函数执行后内容需要几秒钟才能加载并且滑块已经开始工作。
我试图以某种方式延迟滑块函数的执行,直到 php 嵌入函数完成。

这是我的代码:

$(document).ready(function () {
    ajaxpage("products.php?type=featured&order=salesNumber", "featuredArea");
});

$(document).ready(setTimeout(function () {
    $(".productsArea").easySliderProducts({
        nextText: "Next",
        prevText: "Previous"
    });
    document.getElementById("outputHere").innerHTML = $(".page ul#featuredArea li").length;
    $(".page").easySlider({
        s: $(".page ul#featuredArea li").length,
        auto: true,
        continuous: false,
        nextId: "featNextArrow",
        nextText: "",
        prevId: "featPrevArrow",
        prevText: "",
        pause: 7500
    });
}, 1000));

为了使用 setTimeout 函数,我将两者分开。
它对我有用,但对其他人来说结果可能会有所不同。
我想知道是否可以等到 ajaxpage 函数完成加载页面然后继续代码?

Ajax页面代码:http://pastebin.com/XWa0jD77
easySlider1.7 代码:http://pastebin.com/CzK8BzfL

我想过从嵌入页面中调用滑块,但那行不通。

【问题讨论】:

  • settimeout 作为 document.ready 的参数不会做任何事情,您最好将 document.ready 删除。
  • AjaxPage sn-p 缺少一个非常重要的功能,我建议不要使用它,而只使用 jQuery 来满足您的 ajax 需求。 (它不支持 Deferred 对象,并且不允许您为其完成或失败分配回调)
  • 是的,只需将您的 ajaxpage 函数替换为 jQuery 的 .load(),您可以在那里传递一个回调,以便仅在请求完成时运行。

标签: javascript jquery ajax function delay


【解决方案1】:

由于您已经在使用 jquery,我建议您放弃 ajaxpage 函数并改用 $jQuery.load();。

正如您在 jquery 文档中看到的,load() 带有一个回调函数,它可以满足您的需求。

【讨论】:

  • 哦,谢谢,这比 ajaxpage 快得多,而且效果很好!太简单! :) 感谢上帝的 jQuery!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 2016-03-22
  • 2019-02-16
相关资源
最近更新 更多