2011-08-03 72 views
2

我想製作一個使用jquery的Redmine插件。在Redmine插件中包含jquery

我得到的衝突,當我添加下面一行在我看來:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> 

Uncaught TypeError: Cannot call method 'hasChildNodes' of undefined 
prototype.js:5734 
Uncaught TypeError: Object [object Object] has no method 'dispatchEvent' 
prototype.js:828 
Uncaught TypeError: Object [object Object] has no method 'attachEvent' 

的觀點是鉤。

如果我刪除<script src="">,它的工作原理,但我沒有jQuery使用。

回答

7

看着它,原型庫也被加載。通常,一個庫將自動加載到全局範圍中,方法是將自己分配給$變量。

要加載jQuery,只需在加載jQuery後添加$.noConflict();(請參閱jQuery API上的noConflict)。這從$卸載jQuery,並重新分配它以前(原型)。

然後,您使用jQuery對象訪問jQuery,而不是$快捷方式。

jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 

如果你真的想使用快捷變量(例如,$j),那麼你可以做noConflict時爲它分配:

var $j = $.noConflict(); // Then use $j instead of $ 

或者,您可以創建一個匿名函數並分配jQuery到$。這只是功能的範圍內進行(這樣的原型仍是$範圍之外):

(function($) { 
    $(function() { 
    // more code using $ as alias to jQuery 
    }); 
})(jQuery); 

所有這些(和其他幾個例子)所示的noConflict頁面上 - 所以你可能要看看那裏。

+0

感謝您的詳細解釋! – user852689