2012-04-27 47 views
2

我在全局JS文件中有這樣的代碼。只有在jquery被加載的情況下運行document.ready

$(document).ready(function() { 
     DoStuff(); 
}); 

不幸的是有些頁面包含此文件,但不包括jquery文件。所以我得到的錯誤:

Message: The value of the property '$' is null or undefined, 
not a Function object 

如何僅在加載jQuery文件時運行document.ready()

+0

是_loaded_或** **不裝? – 2012-04-27 18:47:33

回答

6
if(window.jQuery) { 
    $(document).ready(function() { 
     DoStuff(); 
    }); 
} 

UPDATE

檢查window.jQuery,而不是僅僅jQuery。這應該避開「未定義」的錯誤。

+0

+1,偉大的思想一樣 – Tejs 2012-04-27 18:46:16

+0

我得到'jQuery沒有定義'錯誤。我想我需要檢查它的定義與否。 – DotnetDude 2012-04-27 18:53:10

+0

@Tejs [我不認爲](http://jsfiddle.net/p9KyE/)。當然,這裏唯一的解決方案是如果你檢查'if('undefined'!= typeof(jQuery)){//你的代碼在這裏}'。然後將所有jQuery代碼放在[IIFE](http://benalman.com/news/2010/11/immediately-invoked-function-expression/)中以避免其他框架的'$'覆蓋。 – Shef 2012-04-27 18:54:10

0

如何:

if($){ 
    // your code here. 
}; 
0

很好,裏面包裹代碼:

if ($ != undefined && $ != null) { 
//everything here 

} 
3

你會測試jQuery的存在第一:

if(jQuery) 
{ 
    $(document).ready(function() { ... }); 
} 
0

如果jQuery是加載,而你仍然收到這個錯誤,請嘗試這樣的:

jQuery(function($) { 
    $(document).ready(function() { 
     DoStuff(); 
    }); 
}); 

http://api.jquery.com/jQuery/#jQuery3

如果您的意思是「不是加載」,那麼您不能使用「ready()」函數。

0
if(jQuery) { 
    $(function() { 
     //... 
    }); 
} 

if(typeof jQuery != 'undefined') { 
    $(function() { 
     //... 
    }); 
} 
相關問題