解决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与Div对层定位和移动获得坐标的实现代码
Sep 08 Javascript
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
jquery实现的省市区三级联动
Apr 02 Javascript
JavaScript预解析及相关技巧分析
Apr 21 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
详解vue-template-admin三级路由无法缓存的解决方案
Mar 10 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 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/04/11 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
Yii全局函数用法示例
2017/01/22 PHP
js停止输出代码
2008/07/20 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
vue实现信息管理系统
2020/05/30 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
python实现机器学习之元线性回归
2018/09/06 Python
python爬取微博评论的实例讲解
2021/01/15 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
《雨霖铃》听课反思
2014/02/13 职场文书
任命书模板
2014/06/04 职场文书
财务负责人任命书
2014/06/06 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
庆元旦活动总结
2014/07/09 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
六年级学生评语大全
2014/12/26 职场文书
大学学生会竞选稿
2015/11/19 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
Mysql开启外网访问
2022/05/15 MySQL
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript