解决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 相关文章推荐
最简单的jQuery程序 入门者学习
Jul 09 Javascript
IE中鼠标经过option触发mouseout的解决方法
Jan 29 Javascript
JQuery Mobile实现导航栏和页脚
Mar 09 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
网页挂马方式整理及详细介绍
Nov 03 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
Angular中支持SCSS的方法
Nov 18 Javascript
实例分析编写vue组件方法
Feb 12 Javascript
node中IO以及定时器优先级详解
May 10 Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
PHP开发入门教程之面向对象
2006/12/05 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
js实现无缝轮播图
2020/03/09 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
浅谈Python 对象内存占用
2016/07/15 Python
python 生成器协程运算实例
2017/09/04 Python
python实现八大排序算法(1)
2017/09/14 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
python实现淘宝购物系统
2019/10/25 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
信访工作者先进事迹
2014/01/17 职场文书
教师自我鉴定范文
2014/03/20 职场文书
地方白酒代理协议书
2014/10/25 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫