关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

同一个页面jquery版本共存处理,jq库冲突处理

发布时间:2020-01-16 13:25:11

        今天主要是给大家具体讲解一下,企业实战中的jquery库版本冲突问题,看一看真实企业中是如何处理jquery库版本冲突问题,其实,主要的原因是由于不同的版本之间,jquery的对应的属性和方法不同使用的问题,如:高版本的某些属性和方法在低版本中不能使用,或直接理解为低版本中没有某个方法,又要使用,这样就导致报错,简而言之,就是多个jquery库版本中的$和jQuery的使用冲突.


当然,遇到问题了,就要处理问题,问题本身给到有三种解决方案:


方式一:

        利用jQuery的实用函数$.noConflict();这个函数归还$的名称控制权给另一个库,因此可以在页面上使用其他库。

这时,我们可以用"jQuery "这个名称调用jQuery的功能。

$.noConflict(); 
jQuery('#id').hide(); 
.....
//或者给jQuery一个别名
var $j=jQuery
$j('#id').hide();


方式二

(function($){/*代码块*/})(jQuery)

这个表单是看上去会让人觉得有点晕,其实很简单。

前半部分:(function($){/*代码块*/})

这是一个函数声明,并用括号括起来够成一个表达式,表达式的返回值就是这个函数的引用。

在这个函数中用$作为参数。所以在注释代码块用可以使用$符号。

后半部分:(jQuery)

在前半半部分返回函数引用后传递jQuery对象参数。

其实,可以把(function($){/*代码块*/})(jQuery) 拆分成:

//声明函数
var fun=function($){/*代码块*/};
//调用函数
fun(jQuery)

方式三

jQuery(function($){/*代码块*/})

通过传递一个函数作为jQuery的参数,因此把这个函数声明为就绪函数。

那它究竟是怎么工作的呢?

我们声明$为就绪函数的参数,因为jQuery总是吧jQuery对象的引用作为第一个参数传递,所以就保证了函数的执行。


企业实战中的处理:

        jQuery自诞生以来,版本越来越多,而且jQuery官网的新版本还在不断的更新和发布中,现已经达到了1.6.4版本,但是我们在以前的项目中就已经使用了旧版本的jQuery,比如已经出现的:1.3.X、1.4.X、1.5.X、1.6.2等等。

  由于项目的需要,必然也需要不断的使用较新版的jQuery,但对于原来就已经存在并已经采用了的旧jQuery版本,我们如何让多个不同的jQuery版本在同一个页面并存而不冲突呢?

  其实,利用jQuery.noConflict()特性,我们不仅可以让jQuery与其他的JS库并存,比如Prototype。也可以与jQuery本身的其他不同版本并存而不冲突。

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>在同一个页面中加载多个不同的jQuery版本</title>
  5. <!-- 从谷歌服务器加载jQuery最新版本 -->
  6. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  7. <script type="text/javascript">
  8. var jQuery_New = $.noConflict(true);
  9. </script>
  10. <!-- 加载jQuery1.6.2版本 -->
  11. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
  12. <script type="text/javascript">
  13. var jQuery_1_6_2 = $.noConflict(true);
  14. </script>
  15. <!-- 加载jQuery1.5.2版本 -->
  16. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
  17. <script type="text/javascript">
  18. var jQuery_1_5_2 = $.noConflict(true);
  19. </script>
  20. <!-- 加载jQuery1.4.2版本 -->
  21. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  22. <script type="text/javascript">
  23. var jQuery_1_4_2 = $.noConflict(true);
  24. </script>
  25. <!-- 加载jQuery1.3.2版本 -->
  26. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  27. <script type="text/javascript">
  28. //var jQuery_1_3_2 = $.noConflict(true);
  29. </script>
  30. <script type="text/javascript">
  31. alert(jQuery_New.fn.jquery);
  32. alert(jQuery_1_6_2.fn.jquery);
  33. alert(jQuery_1_5_2.fn.jquery);
  34. alert(jQuery_1_4_2.fn.jquery);
  35. //alert(jQuery_1_3_2.fn.jquery);
  36. jQuery_New(function($){$('<p>我是最新的'+$.fn.jquery+'版本添加进来的。</p>').appendTo('body');});
  37. jQuery_1_6_2(function($){$('<p>我是'+$.fn.jquery+'版本添加进来的。</p>').appendTo('body');});
  38. jQuery_1_5_2(function($){$('<p>我是'+$.fn.jquery+'版本添加进来的。</p>').appendTo('body');});
  39. jQuery_1_4_2(function($){$('<p>我是'+$.fn.jquery+'版本添加进来的。</p>').appendTo('body');});
  40. // jQuery_1_3_2(function($){$('<p>我是'+$.fn.jquery+'版本添加进来的。</p>').appendTo('body');});
  41. $(function(){
  42. $("input[name=a]").val("123");
  43. })
  44. </script>
  45. </head>
  46. <body>
  47. 在同一个页面中加载多个不同的jQuery版本
  48. <input name="a" id="32" type="input"/>
  49. <br>
  50. </body>
  51. </html>




/template/Home/New100qhl/PC/Static