在一个页面上使用两个版本的jquery

时间:2013-12-25 15:38:21

标签: javascript

我想在一个页面上使用两个版本的jquery但是怎么样?在这里我想用下面的脚本和jquery-1.3.2.min.j与另一个

     <script src="jquery-1.3.2.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="jquery-1.8.1.min.js"></script>
 <script>

 $(document).ready (function(){

  $('.following').hover(function(){
      $(this).text("Unfollow");
    },function(){
       $(this).text("Following");
    });

    $('.following').click(function(){
    $(this).toggleClass('following follow').unbind("hover");
    if($(this).is('.follow')){
        $(this).text("Follow");
    }
    else{

        $(this).bind({
            mouseleave:function(){$(this).text("Following");},
            mouseenter:function(){$(this).text("Unfollow");}      
        });
    }
  });
}); 





 </script>

3 个答案:

答案 0 :(得分:1)

如果可能,您应该重写脚本以使用相同版本的jQuery。您显示的代码不是很复杂,应该可以轻松地重写。

无论如何,使用noConflict method,您可以使用两个版本的jQuery。您需要将其中一个脚本放在$标识符引用新版本的范围内。通过调用$.noClonflict(true) jQuery将恢复加载的第一个版本并返回对加载的第二个版本的引用:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="jquery-1.8.1.min.js" type="text/javascript"></script>

<script type="text/javascript">

(function($){
  // in here $ is the 1.8.1 version

  $(document).ready (function(){

    $('.following').hover(function(){
      $(this).text("Unfollow");
    },function(){
       $(this).text("Following");
    });

    $('.following').click(function(){
      $(this).toggleClass('following follow').unbind("hover");
      if($(this).is('.follow')){
        $(this).text("Follow");
      } else{

        $(this).bind({
          mouseleave:function(){$(this).text("Following");},
          mouseenter:function(){$(this).text("Unfollow");}      
        });
      }
    });
  }); 

}($.noConflict(true)));

// from here on $ is the 1.3.2 version

</script>

如果您想继续引用第二个版本:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="jquery-1.8.1.min.js" type="text/javascript"></script>

<script type="text/javascript">

var $$ = $.noConflict(true);

// from here on $ is the 1.3.2 version and $$ is the 1.8.1 version

(function($){

  // in here $ is the 1.8.1 version

}($$));

</script>

答案 1 :(得分:0)

是的,由于jQuery的noconflict模式,这是可行的。 http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/

答案 2 :(得分:0)

我不建议使用noConflict()。如果你看一下jQuery源代码,它并不是真的意味着这种事情。我推荐以下内容:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">var jQueryOld = $old = jQuery</script>
<script type="text/javascript" src="jquery-1.8.1.min.js"></script>

noConflict()的jQuery源代码

jQuery.noConflict = function( deep ) {
        if ( window.$ === jQuery ) {
                window.$ = _$;
        }

        if ( deep && window.jQuery === jQuery ) {
                window.jQuery = _jQuery;
        }

        return jQuery;
};

基本上,一旦完成所有操作,你仍然会得到两个名为jQuery的对象。另外,要与jQuery一起使用,你必须说jQuery.noConflict(true),如果你阅读文档:

“如果由于某种原因加载了两个版本的jQuery(不推荐),从第二个版本调用$ .noConflict(true)将返回全局范围的jQuery变量到第一个版本的那些。”