解决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,水平有待提高
Jan 31 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
Nov 24 Javascript
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
JavaScript生成GUID的多种算法小结
Aug 18 Javascript
基于jQuery实现搜索关键字自动匹配功能
Mar 26 Javascript
JS &amp; JQuery 动态添加 select option
Jun 08 Javascript
js实现html table 行,列锁定的简单实例
Oct 13 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
Nov 25 Javascript
Vue 短信验证码组件开发详解
Feb 14 Javascript
浅谈 vue 中的 watcher
Dec 04 Javascript
vuex vue简单使用知识点总结
Aug 29 Javascript
Jquery $.map使用方法实例详解
Sep 01 jQuery
原生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中利用XML技术构造远程服务(下)
2006/10/09 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
python原始套接字编程示例分享
2014/02/21 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
NumPy排序的实现
2020/01/21 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
心理健康心得体会
2014/01/02 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
英文升职感谢信
2015/01/23 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
教师外出学习心得体会
2016/01/18 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python