解决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 相关文章推荐
js控制web打印(局部打印)方法整理
May 29 Javascript
JavaScript中switch判断容易犯错的一个细节
Aug 27 Javascript
javascript将数字转换整数金额大写的方法
Jan 27 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
jQuery获取Table某列的值(推荐)
Mar 03 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
layui之table checkbox初始化时选中对应选项的方法
Sep 02 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
风格模板初级不完全修改教程
2006/10/09 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
浅析JavaScript动画
2015/06/10 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
深入Python函数编程的一些特性
2015/04/13 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
python如何快速生成时间戳
2020/07/21 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
预备党员党校学习自我评价分享
2013/11/12 职场文书
承诺书范文
2014/06/03 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
导游词之江西赣州
2019/10/15 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
使用Ajax实现无刷新上传文件
2022/04/12 Javascript
Java异常体系非正常停止和分类
2022/06/14 Java/Android