在Redmine插件中包含jquery

use*_*689 2 html javascript jquery redmine redmine-plugins

我正在尝试制作一个使用jquery的Redmine插件.

当我在视图中添加以下行时,我会遇到冲突:

<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'
Run Code Online (Sandbox Code Playgroud)

视图是一个钩子.

如果我删除它<script src="">,它的工作原理,但我没有使用jQuery.

Jon*_*ter 7

看一下,原型库也被加载了.通常,库会通过将自身分配给$变量来自动加载到全局范围中.

要使jQuery正常工作,只需$.noConflict();在加载jQuery后添加 (请参阅jQuery API上的noConflict).这将卸载jQuery $并将其重新分配给之前的(原型).

然后使用jQuery对象而不是$快捷方式访问jQuery .

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

如果你真的想使用快捷变量(例如$j),那么你可以在执行noConflict时分配它:

var $j = $.noConflict(); // Then use $j instead of $
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建一个匿名函数并将jQuery分配给$它.这只在函数范围内完成(因此原型仍然在范围之外):

(function($) { 
  $(function() {
    // more code using $ as alias to jQuery
  });
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

所有这些(以及一些其他示例)都显示在noConflict页面上 - 因此您可能希望在那里查看.