解决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编程起步(第四课)
Jan 10 Javascript
JavaScript 面向对象编程(2) 定义类
May 18 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
Dec 11 Javascript
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
javascript正则表达式使用replace()替换手机号的方法
Jan 19 Javascript
js获取当前日期时间及其它操作汇总
Apr 17 Javascript
代码分析jQuery四种静态方法使用
Jul 23 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
javascript设置文本框光标的方法实例小结
Nov 04 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
Apr 02 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文件上传实例详解!!!
2007/01/02 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
jQuery中读取json文件示例代码
2013/05/10 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
详解Swift中属性的声明与作用
2016/06/30 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
行政主管岗位职责
2013/11/18 职场文书
党委班子剖析材料
2014/08/21 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
邀请函模板
2015/02/02 职场文书
毕业实习单位意见
2015/06/04 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
html中两种获取标签内的值的方法
2022/06/16 jQuery