2012-03-14 59 views
0

所有, 我有下面的代碼:jQuery的DOM中沒有窗戶裝

$(document).ready(function() { 
// more code using $ as alias to jQuery 
alert('it works'); 
},'jQuery'); 

頁面加載時我得到以下錯誤:

Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function

我已經加載之前的jQuery我試圖添加這個。

下面是這是怎麼裝的(我的代碼是custom.js):

<script type='text/javascript' src='http://localhost/oml_live_update/wp-includes/js/jquery/jquery.js?ver=1.7.1'></script> 
<script type='text/javascript' src='http://localhost/oml_live_update/wp-content/themes/alyeska/framework/frontend/assets/plugins/prettyphoto/js/jquery.prettyPhoto.js?ver=3.1.3'></script> 
<script type='text/javascript' src='http://localhost/oml_live_update/wp-content/themes/alyeska/framework/frontend/assets/js/superfish.js?ver=1.4.8'></script> 
<script type='text/javascript' src='http://localhost/oml_live_update/wp-content/themes/alyeska/framework/frontend/assets/js/flexslider.js?ver=1.8'></script> 
<script type='text/javascript' src='http://localhost/oml_live_update/wp-content/themes/alyeska/framework/frontend/assets/js/roundabout.js?ver=1.1'></script> 
<script type='text/javascript' src='http://localhost/oml_live_update/wp-content/themes/alyeska/assets/js/alyeska.min.js?ver=1.0'></script> 
<script type='text/javascript' src='http://localhost/oml_live_update/wp-content/themes/alyeska/assets/js/custom.js?ver=1.0'></script> 

爲什麼這是行不通的任何想法?

+0

什麼時候在代碼之前或之後加載jquery腳本? – Gabe 2012-03-14 22:55:59

+0

你在這段代碼之前添加了jQuery文件嗎? – 2012-03-14 22:56:29

+0

你在做錯事。可能你沒有收錄jquery文件。它正在處理[jsfiddle](http://jsfiddle.net/DD5jJ/) – Dips 2012-03-14 22:58:02

回答

2
$(function() { 
    alert('it works'); 
}); 

這不適合你嗎?這是該標準的語法:http://api.jquery.com/ready/

如果你想創建一個IIFE(立即調用函數表達式):

(function ($) { 
    alert('it works'); 
})(jQuery); 

本作中的代碼創建一個新的範圍並通過在jQuery對象$

更新

我不使用WordPress的,但我的理解是,$j=jQuery.noConflict();運行,因此,jQuery的基本存儲在$j變量(如果它不是自動完成則需要手動完成):

<script type='text/javascript' src='http://localhost/oml_live_update/wp-includes/js/jquery/jquery.js?ver=1.7.1'></script> 
<script> 
$j = jQuery.noConflict(); 
$j(function() { 
    alert('it works'); 
}); 
</script> 
... 

另外請注意,您可以通過$到匿名函數是document.ready事件處理程序,所以你不必使用$j

$j(function ($) { 
    alert('it works'); 
    //you can now use $() instead of $j() 
}); 

更新

您是否嘗試過在地方$使用jQuery

jQuery(function($) { 
    alert('it works'); 
    //since `$` was passed into this function, it can be used instead of `jQuery` 
}); 
+0

我在Wordpress中使用它,所以我這樣做是因爲Wordpress有noConflict。 – user1048676 2012-03-14 22:58:45

+0

@ user1048676查看**更新**到我的答案。我不知道WordPress是否自己執行'$ .noConflict()',或者如果必須的話。 – Jasper 2012-03-14 23:00:46

+0

@ user1048676退房我最後**更新**。你應該可以在全局範圍內使用'jQuery'代替'$'。 – Jasper 2012-03-14 23:10:58

0

問題可能是相沖突的版本。使用

<script> 
    $.noConflict(); 
    $(document).ready(function() { 
    // more code using $ as alias to jQuery 
    alert('it works'); 
    }); //You dont need to pass the pass the extra 'jQuery' Parameter 
</script> 
0

我有一個類似的問題,

在我的情況

中,快魚菜單工作正常,但我仍然會得到這個錯誤。

我有

<script> 
    $(document).ready(function(){ 
     $("ul.sf-menu").superfish({ 
      pathClass: 'current' 
     }); 
    }); 
</script> 

和螢火蟲將指向pathClass。

​​

這可能不適合你的工作,但嘗試刪除整個腳本調用,即

<script> 
    $(document).ready(function(){ 
     $("ul.sf-menu").superfish({ 
      pathClass: 'current' 
     }); 
    }); 
</script> 

,它的工作對我來說,仍試圖找出其如何看菜單,但它工作。Firebug不會bug我,IE不會告訴我它不安全。