在Redmine插件中包含jquery

时间:2011-08-03 11:55:50

标签: javascript jquery html 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'

视图是一个钩子。

如果我删除<script src="">,它可以工作,但是我没有jQuery可以使用。

1 个答案:

答案 0 :(得分: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页面上 - 所以您可能希望在那里查看。