首页 > jQuery与其它库冲突的解决方法(转)

jQuery与其它库冲突的解决方法(转)

原文出处:http://www.jb51.net/article/24014.htm

 

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。全局的对象都很好地存储在jQuery命名空间里,因此当把jQuery和其它javascript类库一起使用时,不会引起冲突.

(注意:默认情况下,jQuery用$作为自身的缩写而以) 

如果jQuery类库和别的类库冲突的话,可以使用jQuerynoConflict()函数来将变量$的控制权移交出给其它的javaScipt库。看下面小片断代码 

 

 

假设JsCOM.js库中,有这样一个函数 

 

1 function $(objName) { 
2 if (document.getElementById) { 
3 return eval('document.getElementById("' + objName + '")') 
4 } 
5 else { 
6 return eval("document.all." + objName) 
7 } 

大家都知道jQuery里面也一个这样的函数,为了不引起冲突,我们将jQuery的变量$的控制权移交出给别的javascript库 

1 jQuery.noConflict(); //将变量$的控制权移交给JsCOM.js 
2 var $cr = jQuery("#cr"); //照样使用jQuery类库,只是用jQuery代替了原来的$而以。 
3 var JsCOM_cr = $("cr"); //使用JsCOM.js类库 

在这里可以把jQuery()函数作为jQuery对象的制造工厂. 

在这里要注意几点 

1.引用javascript类库时,一定要把jQuery引用放在最后面,就像上面一样,JsCOM.js的引用在jQuery引用的前面(具体原因我也不知,不过确实需要这样) 

2.特别要注意jQuery()代替$()时,jQuery是区分大小写的,因为javascript本身就是区分大小写的(好像说这个有点多余,不过还是希望大家不要犯这种错误) 

基本上根据上面的
方法就可以解决jQuery和其它库的冲突问题了! 

如果你觉得上面的方式不爽,每次都要打jQuery来代替$增加了您敲键盘的工作量,那请接着看。。 

除上面之外,还有另一种选择。如果想确保jQuery不会与其它库冲突,但又想自定义一个快捷方式,可以进行如下操作; 

1 var $j = jQuery.noConflict(); //自定一个快捷方式 
2 var $cr = $j("#cr"); //使用jQuery类库,得用自定义快捷方式----$j; 
3 var JsCOM_cr = $("cr"); //和上一段代码一样,使用的是JsCOM.js类库 

如果您还有别的要求,想继续使用原先的$(),同时还需要与别的类库不冲突的话,还有两种解决方法 

其一: 

jQuery.noConflict(); //将变量$的控制权让给JsCOM.js 
jQuery(function($) 
{ 
$("p").click(function() //在函数内继续可以使用jquery类库的$()方法 
{ 
alert($(this).text()); 
}) 
}) 
var JsCOM_cr = $("cr"); // 在函数外面,照样可以使用JsCOM.js的$()方法 

其二: 

jQuery.noConflict(); //将变量$的控件权移交给别的类库,使用jquery类库的$符号时,请使用jQuery("#id"); 
(function($) { //定义匿名函数并设置形参为$ 
$(function() { //匿名函数内部的$均为jQuery 
$("div").click(function() { //继续使用$()方法 
alert($(this).text()); 
}) 
}) 
}) 
(jQuery); //使用匿名函数且传递实参jQUery 
alert($("cr")); //使用的是jsCOM.js类库中的$()函数 

第二种方法应该是兼容旧的代码最好的方式,修改的代码是最少的! 

不过如果是新写的jQuery代码,我还是比较喜欢使用刚开始讲的那种(jQuery.noConflict(),然后就使用jQuery("#id"),这种方式) 

如果您的页面是先引用jQuery类库再引入别的类库的话,那么我们可以直接使用jQuery来做一些工作,同时,可以使用$()方法作为其它库的快捷方式。这里无需调用jQuery.noConflict()函数,请看下面代码 

 

 

jQuery().ready(function() { //无需调用jQuery.noConflict()函数 

var $cr = jQuery("#cr"); 

$cr.click(function() { 

if ($cr.is(":checked")) { 

alert("感谢你的支持!你可以继续操作了.."); 



}) 

}) 

alert($("cr")); //使用的是jsCOM.js类库中的$()函数 

好了,看了上面这么多种方法来解决冲突,这下你可以放心的在您的项目中引用jQuery了吧 :)

转载于:https://www.cnblogs.com/m3Lee/p/3732459.html

更多相关:

  • 首先,这两个函数都是在页面载入后执行的函数,其中两者的区别在于: 在jQuery中$(function(){})等同于jQuery(function(){}),另一个写法为jQuery(document).ready(function(){ }),在DOM加载完成之后立即执行,其中存放操作DOM的操作,在其执行时DOM已经存在,不可用...

  •  转载自http://www.jb51.net/article/27185.htm 测类、方法、变量或属性是否已存在,这是Javascript编程基础知识。在这里我们就是要检测jQuery()或$()函数是否存在 当然,该方法不局限于jQuery的检测,对与任何Javascript变量或函数都是通用的。 当前网页加载jQuery后,j...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...