解决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 tips提示框组件实现代码
Nov 19 Javascript
artDialog双击会关闭对话框的修改过程分享
Aug 05 Javascript
node.js中的console用法总结
Dec 15 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
input 禁止输入特殊字符的四种实现方式
Aug 24 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
基于JavaScript实现飘落星星特效
Aug 10 Javascript
用Axios Element实现全局的请求loading的方法
Mar 15 Javascript
vue3获取当前路由地址
Feb 18 Vue.js
原生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 制作简单的留言本 图文教程
2009/11/02 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
Python 装饰器深入理解
2017/03/16 Python
django模板语法学习之include示例详解
2017/12/17 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
通过实例学习Python Excel操作
2020/01/06 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
优秀应届毕业生自荐信
2013/11/16 职场文书
cf战队收人广告词
2014/03/14 职场文书
关于安全的广播稿
2014/10/23 职场文书
会计人员岗位职责
2015/02/03 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
python tkinter实现定时关机
2021/04/21 Python
python开发的自动化运维工具ansible详解
2021/08/07 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技
排查Tomcat进程假死的问题
2022/05/06 Servers
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS