解决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 异步调用框架 (Part 4 - 链式调用)
Aug 04 Javascript
js获取IP和PcName(IE)在vs中可用
Aug 02 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
javascript实现10个球随机运动、碰撞实例详解
Jul 08 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
JS中的数组方法笔记整理
Jul 26 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
vue proxyTable 接口跨域请求调试的示例
Sep 12 Javascript
vue cli webpack中使用sass的方法
Feb 24 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
基于Node的Axure文件在线预览的实现代码
Aug 28 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
通过html表格发电子邮件
2006/10/09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
python缩进区别分析
2014/02/15 Python
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
Python 如何在字符串中插入变量
2020/08/01 Python
基于Python实现粒子滤波效果
2020/12/01 Python
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
个人对照检查剖析材料
2014/10/13 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
工艺技术员岗位职责
2015/02/04 职场文书