2012-04-30 68 views
-3

是否有任何JavaScript代碼包裝,可以用來等待jquery加載和創建一個回調後成功加載jquery?jquery是準備包裝

像這樣

JqueryWait(function(){ 
    //my magnificent jquery codes ^^ 
}); 

我希望有一個代碼包這樣的事情...

說明: 我使用headjs和我headjs的單獨的代碼加載jQuery的。現在我的其他腳本依賴於jquery,這就是爲什麼其他腳本必須知道jQuery是否已經加載。我知道headjs的回調函數,但是我的腳本不能在回調函數

回答

1

試試這個:只要你把jQuery的文件之前

function JqueryWait(fn) { 
    if (jQuery) fn(); 
    else setTimeout(function() { JqueryWait(fn); }, 100); 
} 

JqueryWait(function(){ 
    //my magnificent jquery codes ^^ 
}); 
+0

這吸吮內存。 – Starx

+1

@Starx:輪詢似乎是唯一的途徑,我認爲OP在加載頁面後加載jQuery。無論是它還是它的GM腳本 – qwertymk

0
$(function() { 
// code jere... jquery is loaded 
}); 

更多信息放:http://api.jquery.com/ready/

+0

這是爲什麼被拒絕? – Pointy

+0

似乎不是一個很好的理由。也許更多的人用.ready()知道它。 – joshp

+0

也許另一個要點是確保在調用之前加載jquery,即加載和評估腳本的基本規則。 – joshp

-1

你不需要額外的功能來做到這一點。 jQuery的$(document).ready(function() { });就足夠了。

$(function() { 
    //ever code written inside here is run, after the jQuery & DOM is ready 
}); 

Anways,還有另一種方式做檢查,如果jQuery的已加載或不

if (typeof jQuery == 'undefined') { 
    //... jquery not loaded 
} 
+0

請留下評論,你是downvoting。謝謝 – Starx

+1

您錯過了這個問題的要點 - 如果您在加載jQuery之前調用了'$()'(即在給'$'賦值之前),用戶將得到一個錯誤。 – RobG

+0

$是jquery,我想知道是否加載jquery –

0

您JavaScript文件(如果將兩個文件放入一個.js文件無關緊要),應在代碼啓動之前加載jQuery。否則,jQuery沒有加載正確。您可以使用此備用方法在你的腳本來檢查jQuery的:如果你正在尋找在頁面加載後加載的jQuery

<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> 
<script type="text/javascript"> 
if (typeof jQuery == 'undefined') { 
    document.write(unescape("%3Cscript src='/js/jquery-1.7.2.min.js' type='text/javascript'%3E%3C/script%3E")); 
} 
</script> 

通過CSS-Tricks

,你有兩個選擇。注入一個腳本標籤,將jQuery添加到DOM中並等待文檔加載(如上面的例子),或者使用像RequireJS這樣的異步加載器(老實說,它幾乎是相同的東西,但更適合用於許多其他目的,如依賴關係管理) 。

注意:在使用$(function(){})其他答案:

該方法僅等待DOM加載,它不檢查的jQuery的運行代碼之前存在。

+0

'$(...)'不等任何東西,它立即被調用。傳遞給它的函數在jQuery認爲DOM被加載時調用。 – RobG

+0

與等待jQuery相比,它仍然等待DOM執行那個函數就是我的意思。 –