2012-06-21 62 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

相關問題