解决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 相关文章推荐
use jscript List Installed Software
Jun 11 Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
EASYUI TREEGRID异步加载数据实现方法
Aug 22 Javascript
jquery更换文章内容与改变字体大小代码
Sep 30 Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 Javascript
jquery原理以及学习技巧介绍
Nov 11 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
js滚轮事件兼容性问题需要注意哪些
Nov 15 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
vue 解决遍历对象显示的顺序不对问题
Nov 07 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使用数组依次替换字符串中匹配项
2016/01/08 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
python可视化实现KNN算法
2019/10/16 Python
Python笔记之观察者模式
2019/11/20 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
服装公司总经理岗位职责
2013/11/30 职场文书
升旗仪式主持词
2014/03/19 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
2014年收银工作总结
2014/11/13 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python