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


Posted in Javascript onJune 25, 2010

(注意:默认情况下,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了吧 :)
Javascript 相关文章推荐
javascript Array对象基础知识小结
Nov 16 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 Javascript
jQuery表单域选择器用法分析
Feb 10 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
Dec 24 Javascript
JS创建对象几种不同方法详解
Mar 01 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
Jun 16 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
Aug 18 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
vue单页面在微信下只能分享落地页的解决方案
Apr 15 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
Jun 25 #Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 #Javascript
jquery keypress,keyup,onpropertychange键盘事件
Jun 25 #Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 #Javascript
javascript面向对象编程(一) 实例代码
Jun 25 #Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
Jun 25 #Javascript
jQuery对象和DOM对象使用说明
Jun 25 #Javascript
You might like
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
总结一些js自定义的函数
2006/08/05 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
Javascript中神奇的this
2016/01/20 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
python与C互相调用的方法详解
2017/07/14 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Django实现基于类的分页功能
2019/10/31 Python
python实现翻译word表格小程序
2020/02/27 Python
Python selenium自动化测试模型图解
2020/04/15 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
Servlet方面面试题
2016/09/28 面试题
中专毕业生自荐信范文
2013/11/28 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
国庆宣传标语
2014/06/30 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
导游词之青岛崂山
2019/12/27 职场文书