解决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 相关文章推荐
JavaScript Cookie 直接浏览网站分网址
Dec 08 Javascript
Js获取下拉框选定项的值和文本的实现代码
Feb 26 Javascript
javascript随机之洗牌算法深入分析
Jun 07 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
Bootstrap CSS布局之按钮
Dec 17 Javascript
JavaScript实现公历转农历功能示例
Feb 13 Javascript
PHP7新特性简述
Jun 11 Javascript
react-router4 嵌套路由的使用方法
Jul 24 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
Vue.js 利用v-for中的index值实现隔行变色
Aug 01 Javascript
JS实现计算小于非负数n的素数的数量算法示例
Feb 26 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
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
PHP图片上传代码
2013/11/04 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
对比分析json及XML
2014/11/28 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
python列表的常用操作方法小结
2016/05/21 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
影视艺术学院毕业生自荐信
2013/11/13 职场文书
致接力运动员广播稿
2014/02/17 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
学生检讨书范文
2019/06/24 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis