2012-06-21 64 views
1

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

这里是我的代码:

$(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函数完成加载页面然后继续执行代码?

AjaxPage代码:http://pastebin.com/XWa0jD77
easySlider1.7代码:http://pastebin.com/CzK8BzfL

我想过从嵌入页面中调用滑块,虽然这是行不通的。

+1

settimeout作为document.ready的参数不会阻止antyhing,您可能会删除document.ready。 –

+1

AjaxPage片断缺少一个非常重要的功能块,我建议不要使用它,只是使用jQuery来满足您的ajax需求。 (它不支持Deferred对象,它不允许你指定一个回调来完成或失败) –

+1

是的,只需用jQuery的.load()替换你的ajaxpage函数,就可以传回一个回调来运行只有当请求完成时。 – Mahn

回答

7

因为你已经在使用jquery,我建议你扔掉你的ajaxpage函数并使用$jQuery.load();来代替。你可以在jquery doc中看到,load()带有一个回调函数,它完全符合你的需求。

+0

噢,谢谢,这比ajaxpage快得多,而且效果很棒!太简单! :)感谢上帝为jQuery! – Asaf

相关问题