解决jquery中美元符号命名冲突问题


Posted in Javascript onJanuary 08, 2014

在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg') 的写法。然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突。下面以引入两个库文件 jquery.js和prototype.js为例来进行说明。

第一种情况:jquery.js在prototype.js之后进行引入,如: <</span> script src = " prototype.js " type = " text/javascript " />
<</span> script src = " jquery.js " type = " text/javascript " />
在这种情况下,我们在自己的js代码中如下写的话:
$( ' #msg ' ).hide();
$永远代表的是jquery中定义的$符号,也可以写成JQuery('#msg').hide();如果想要使用prototype.js中定义的$,我们在后面再介绍。

第二种情况:jquery.js在prototype.js之前进行引入,如: <</span> script src = " jquery.js " type = " text/javascript " />
<</span> script src = " prototype.js " type = " text/javascript " />
在这种情况下,我们在自己的js代码中如下写的话:
$( ' #msg ' ).hide();
$此时代表的prototype.js中定义的$符号,如果我们想要调用jquery.js中的工厂选择函数功能的话,只能用全称写法JQuery('#msg').hide().

下面先介绍在第一种引入js库文件顺序的情况下,如何正确的使用不同的js库中定义的$符号。

一.使用JQuery.noConflict()
该方法的作用就是让Jquery放弃对$的所有权,将$的控制权交还给prototype.js,因为jquery.js是后引入的,所以最后拥有$控制权的是jquery。它的返回值是JQuery。当在代码中调用了该 方法以后,我们就不可以使用$来调用jquery的方法了,此时$就代表在prototype.js库中定义的$了。如下: JQuery.noConflict();
// 此处不可以再写成$('#msg').hide(),此时的$代表prototype.js中定义的$符号。
JQuey( ' #msg ' ).hide();
自此以后$就代表prototype.js中定义的$,jquery.js中的$无法再使用,只能使用jquery.js中$的全称JQuery了。

二.自定义JQuery的别名
如果觉得第一种方法中使用了JQuery.noConflict()方法以后,只能使用JQuery全称比较麻烦的话,我们还可以为JQuery重定义别名。如下:
var $j = JQuery.noConflict();
$j( ' #msg ' ).hide(); // 此处$j就代表JQuery
自此以后$就代表prototype.js中定义的$,jquey.js中的$无法再使用,只能使用$j来作为jquey.js中JQuery的别名了。

三.使用语句块,在语句块中仍然使用jquery.js中定义的$,如下:
JQuery.noConflict();
JQuery(document).ready(function($){ $( ' #msg ' ).hide(); // 此时在整个ready事件的方法中使用的$都是jquery.js中定义的$. }); 或者使用如下语句块:
(function($){ $( ' #msg ' ).hide(); // 此时在这个语句块中使用的都是jquery.js中定义的$. })(JQuery)
如果在第二种引入js库文件顺序的情况下,如何使用jquery.js中的$,我们还是可以使用上面介绍的语句块的方法,如:
<</span> script src = " jquery.js " type = " text/javascript " />
<</span> script src = " prototype.js " type = " text/javascript " />
<</span> script type = " text/javascript " >
(function($){ $( ' #msg ' ).hide(); // 此时在这个语句块中使用的都是jquery.js中定义的$. })(JQuery)
</</span> script >
这种使用语句块的方法非常有用,在我们自己写jquery插件时,应该都使用这种写法,因为我们不知道具体工作过程中是如何顺序引入各种js库的,而这种语句块的写法却能屏蔽冲突。

ps :jquery中特殊字符的含义:
#

指示 id 
.

指示 class 
*

全选 
,

多选 
空格 后代 
>

子 
~

兄弟 
+

下一个 
:

子(多功能) 
()

函数式的过滤与查找

Javascript 相关文章推荐
JQuery扩展插件Validate—4设置错误提示的样式
Sep 05 Javascript
表格奇偶行设置不同颜色的核心JS代码
Dec 24 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
jQuery实现的仿select功能代码
Aug 19 Javascript
JS深度拷贝Object Array实例分析
Mar 31 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
JavaScript实现公历转农历功能示例
Feb 13 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
JavaScript中concat复制数组方法浅析
Jan 20 Javascript
javascript的this关键字详解
May 20 Javascript
vue实现输入一位数字转汉字功能
Dec 13 Javascript
在 HTML 页面中使用 React的场景分析
Jan 18 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 #Javascript
iframe窗口高度自适应的实现方法
Jan 08 #Javascript
jquery对单选框,多选框,文本框等常见操作小结
Jan 08 #Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 #Javascript
js获取当前页面路径示例讲解
Jan 08 #Javascript
js获取当前路径的简单示例代码
Jan 08 #Javascript
JS 操作Array数组的方法及属性实例解析
Jan 08 #Javascript
You might like
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
php读取3389的脚本
2014/05/06 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
php多线程并发实现方法
2016/09/30 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python中的pprint折腾记
2015/01/21 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
django中的图片验证码功能
2019/09/18 Python
python config文件的读写操作示例
2019/09/27 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
老师推荐信
2013/10/28 职场文书
电脑教师的自我评价
2013/12/18 职场文书
简历的自我评价
2014/02/03 职场文书
副处级干部考察材料
2014/05/17 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
母亲节感言
2015/08/03 职场文书