解决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 函数的执行环境和作用域链的深入解析
Nov 01 Javascript
Jquery调用webService远程访问出错的解决方法
May 21 Javascript
JavaScript 原型继承之构造函数继承
Aug 26 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
Aug 30 Javascript
Mac地址验证的javascript代码
Nov 09 Javascript
jquery预览图片实现鼠标放上去显示实际大小
Jan 16 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
Jun 13 Javascript
深入理解JS继承和原型链的问题
Dec 17 Javascript
jQuery实现给input绑定回车事件的方法
Feb 09 Javascript
jquery仿ps颜色拾取功能
Mar 08 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
May 03 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
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP7变量处理机制修改
2021/03/09 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
Python实现的中国剩余定理算法示例
2017/08/05 Python
Python实现微信小程序支付功能
2019/07/25 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
sort命令的作用和用法
2012/11/04 面试题
销售人员职业生涯规划范文
2014/03/01 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
节水口号标语
2014/06/19 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
介绍长城的导游词
2015/01/30 职场文书
慈善募捐倡议书
2015/04/27 职场文书
退税申请报告怎么写
2015/05/18 职场文书
CentOS MySql8 远程连接实战
2022/04/19 MySQL