jQuery与Prototype冲突(noconflict不起作用)

时间:2013-02-18 21:54:21

标签: javascript jquery prototypejs

我使用jQuery v1.6.4 http://code.jquery.com/jquery-1.6.4.jsprototype

我正在尝试使用jQuery Tabs小部件,它与原型冲突。因此,输入的上传按钮无效。

我试过这个解决但似乎没有用。

<script type="text/javascript">
  jQuery.noConflict();
  _ccsjQ(function() {
    _ccsjQ( "#tabs" ).tabs();
  });
</script>

有趣的是,如果我按F5上传按钮有效,当我刷新时,无法正常工作。

2 个答案:

答案 0 :(得分:4)

简单方法(恕我直言)只需调用jQuery.noConflict()然后将任何jQuery代码包装在匿名函数中:

jQuery.noConflict();
(function($){
  // use your standard $(...) in here
})(jQuery);

或者,如果您不打算使用jQuery(...)(例如var jq = jQuery.noConflict();,然后使用jq(...)),则需要为jQuery指定一个新别名。

两者的使用示例:

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js"></script>
    <script type="text/javascript">
        var _cssjQ = jQuery.noConflict();
        _cssjQ('.foo').css('color','#f0f');
        (function($){
            $('.bar').css('color','#f0f');
        })(jQuery);
    </script>

小提琴:http://jsfiddle.net/kbWah/1/

答案 1 :(得分:0)

1)首先定义Jquery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2)在Jquery和之前的原型

之后添加脚本
<script>
  var pjquery = jQuery.noConflict();//pjquery will represent jquery framework now on-wards
</script>

3)现在定义prototype.js

<script type = "text/javascript" src = "js/prototype.js" ></script>

现在,jquery被称为使用pjquery而不是$Jquery