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

 更新时间:2010年06月25日 19:54:47   作者:  
在jQuery库中,几乎所有的插件都被限制在它的命名空间里。全局的对象都很好地存储在jQuery命名空间里,因此当把jQuery和其它javascript类库一起使用时,不会引起冲突.
(注意:默认情况下,jQuery用$作为自身的缩写而以)
如果jQuery类库和别的类库冲突的话,可以使用jQuerynoConflict()函数来将变量$的控制权移交出给其它的javaScipt库。看下面小片断代码
<script type="text/javascript" src="../JS/JsCOM.js"></script>
<script type="text/javascript" src="../jQuery/jquery-1.3.2-vsdoc2.js"></script>
假设JsCOM.js库中,有这样一个函数
复制代码 代码如下:

function $(objName) {
if (document.getElementById) {
return eval('document.getElementById("' + objName + '")')
}
else {
return eval("document.all." + objName)
}

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

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

在这里可以把jQuery()函数作为jQuery对象的制造工厂.
在这里要注意几点
1.引用javascript类库时,一定要把jQuery引用放在最后面,就像上面一样,JsCOM.js的引用在jQuery引用的前面(具体原因我也不知,不过确实需要这样)
2.特别要注意jQuery()代替$()时,jQuery是区分大小写的,因为javascript本身就是区分大小写的(好像说这个有点多余,不过还是希望大家不要犯这种错误)
基本上根据上面的
方法就可以解决jQuery和其它库的冲突问题了!
如果你觉得上面的方式不爽,每次都要打jQuery来代替$增加了您敲键盘的工作量,那请接着看。。
除上面之外,还有另一种选择。如果想确保jQuery不会与其它库冲突,但又想自定义一个快捷方式,可以进行如下操作;
复制代码 代码如下:

var $j = jQuery.noConflict(); //自定一个快捷方式
var $cr = $j("#cr"); //使用jQuery类库,得用自定义快捷方式----$j;
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()函数,请看下面代码
复制代码 代码如下:

<script type="text/javascript" src="../jQuery/jquery-1.3.2-vsdoc2.js"></script>
<script type="text/javascript" src="../JS/JsCOM.js"></script>
jQuery().ready(function() { //无需调用jQuery.noConflict()函数
var $cr = jQuery("#cr");
$cr.click(function() {
if ($cr.is(":checked")) {
alert("感谢你的支持!你可以继续操作了..");
}
})
})
alert($("cr")); //使用的是jsCOM.js类库中的$()函数

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

相关文章

  • Jquery数独游戏解析(一)-页面布局

    Jquery数独游戏解析(一)-页面布局

    上周发布了‘jquery开发的数独游戏’,下载量很多评论的人很少。近期会将主要的开发思路整理出来与大家交流,非常希望与大家通过这个例子共同探讨和学习。
    2010-11-11
  • jQuery替换节点元素的操作方法

    jQuery替换节点元素的操作方法

    这篇文章通过实例代码给大家讲解了jquery替换节点元素的操作方法及动态页面的实现代码,非常不错,需要的朋友参考下吧
    2018-03-03
  • jquery按回车键实现表单提交的简单实例

    jquery按回车键实现表单提交的简单实例

    下面小编就为大家带来一篇jquery按回车键实现表单提交的简单实例。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • jQuery中on方法使用注意事项详解

    jQuery中on方法使用注意事项详解

    本文主要介绍jQuery中on方法使用注意事项。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 几种二级联动案例(jQuery\Array\Ajax php)

    几种二级联动案例(jQuery\Array\Ajax php)

    这篇文章主要为大家详细介绍了几种二级联动案例(jQuery\Array\Ajax php),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • jQuery validate+artdialog+jquery form实现弹出表单思路详解

    jQuery validate+artdialog+jquery form实现弹出表单思路详解

    在项目需求中有这样一功能:在页面弹出一个form表单,ajax无刷新提交表单,表单需通过验证。下面小编给大家介绍通过jQuery validate+artdialog+jquery form实现弹出表单思路详解,需要的朋友参考下吧
    2016-04-04
  • Jquery 动态添加元素并添加点击事件实现过程解析

    Jquery 动态添加元素并添加点击事件实现过程解析

    这篇文章主要介绍了Jquery 动态添加元素并添加点击事件实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • jquery插件jbox使用iframe关闭问题

    jquery插件jbox使用iframe关闭问题

    最近做需要用到弹出窗口,发现JBox不错,可以支持iframe,但是发现个问题,在iframe中添加一个按钮点击此按钮
    2009-02-02
  • ajax jquery实现页面某一个div的刷新效果

    ajax jquery实现页面某一个div的刷新效果

    这篇文章主要给大家介绍了关于ajax jquery实现页面某一个div的刷新效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 突发奇想的一个jquery插件

    突发奇想的一个jquery插件

    这两天突发奇想,结果就做了一个jQ的tip插件,形状就像下面这样。会随title的多少改变大小的哟.
    2010-11-11

最新评论