2013-10-09 52 views
2

我希望我的JS的一些部分進行初始化時,文檔準備好時,AJAX查詢完成
事情是這樣的:jQuery的:兩者。就緒()和.ajaxComplete

if ($(document).ready() or $(document).ajaxComplete()) { 
    // do something 
} 

是否有可能寫出這樣一個條件?
我該如何做對?

+1

雖然這似乎沒有多大意義。那是兩個完全獨立的事件。您通常將東西放入必須訪問DOM的'ready'處理程序中。 Ajax回調OTOH可以在DOM準備好並且元素可用之前執行。請描述您正在嘗試解決的實際問題。 –

+0

你在jquery加載之前正在做ajax請求?你正在加載jQuery之前的HTML?如果不是不行,那麼我建議你不要不要,否則你的問題就變得不相關 – mikakun

回答

6

u可以使用綁定功能

$(document).bind('ready ajaxComplete', function(){ 
    // Your code here 
}) 

雖然我的意見與Felix同意,準備功能主要是用來執行行動,只有當整個文檔加載

+0

'.ready'和'.ajaxComplete'是特殊功能。我不認爲你可以用'.bind'替代它們。 –

+0

被測試:但jQuery的文件提到「jQuery觸發ajaxComplete事件」 – LeGEC

+0

有點困惑和不確定我自己的答案現在..準備好&ajaxComplete視爲事件,如點擊,改變? –

4

你可以把你常用的一個單獨的函數在代碼的函數,並將其綁定到儘可能多的活動,只要你想:

function doStuff(){ 
    // do something 
} 

$(document).ready(doStuff); 
$(document).ajaxComplete(doStuff); 

由於Jigar mentionned:你也可以使用.bind('evtA evtB', func).on('evtA evtB', func)可以一次性將相同的回調綁定到多個事件。

但是,documentationready回調說:

還有的$(document)。在( 「準備就緒」,處理程序),不贊成的jQuery 1.8。

+1

在這種情況下,他必須設置一個標誌,確定代碼是否已經執行到防止它運行兩次。 – Kiruse

+0

你的答案似乎更好..沒有比我更有爭議:p是的,一個國旗將需要提及@ Derija93 –