jQuery解决$符号命名冲突


Posted in Javascript onJune 18, 2016

前些天朋友让我帮他解决一个页面中jquery特效的兼容性问题,觉得这是一个很容易忽略也很重要的一点,特在此记录一下。

朋友给的页面中用到了三个特效,其中两个特效可以显示,第三个没有效果。通过查看引用的js文件,我发现页面中不光引入了jquery.js,还引入了一个名为prototype.js的文件。 这个prototype.js之前未曾听说过,特意在百度上搜了一下,原来它也是一个js类库,功能和jquery差不多,而且很强大。

通过一点点的排查,我发现那两个可以显示的特效引用的是jquery,而不显示的那个特效引用的是这个prototype.js。 稍一分析,终于找到了出错的关键:jquery中的$和prototype.js中的$冲突了,两个类库中都是通过$符号来调用,然而如果直接这样写的话就会不知道这个$是属于谁的,该调用哪个类库中的方法来实现特效的显示。

既然找到了问题的根结所在,那这个问题也就好解决了。

方法一:在jquery中,有这样一段代码:

// Expose jQuery to the global object

window.jQuery = window.$ = jQuery;

也就是说,我们可以通过jQuery来代替jquery.js中的$符号进行调用,前提必须声明一下:

jQuery = $;

那,新的问题又出现了。页面中有那么多地方用到了$,我不仅要区分到底哪些$是属于jquery的,还要将这些$替换成jQuery这个单词,更严重的是,如果该页面中要增加新的jquery特效,我还要时刻的提醒自己,调用$的时候要用jQuery来代替,稍一疏忽,不仅出不来想要的效果,而且修改起来也是一个大工作量的任务。看来,这种方法是行不通的。

难道就没有一个一劳永逸的方法可以将这个$的"归属权"给明确的区分出来吗?办法当然是有的!

方法二:使用jquery语句块来实现:

首先,来看一下jquery语句块的格式:

(function($){ 
 ..... 
 $('#msg').show();//此时在这个语句块中使用的都是jquery.js中定义的$. 

})(JQuery)

这样,我们在调用jquery中的$实现特效显示时,只要把这段代码写在这个语句块中,$符号该怎么调用还怎么调用。而prototype.js中的$写在语句块外,$符号也是该怎么调用怎么调用,两者根本不会产生什么影响了。

以上就是本文的全部内容,希望这个方法也能给遇到相同问题的其他人带来帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用JS读秒使用示例
Sep 21 Javascript
jquery 快速回到页首的方法
Dec 05 Javascript
node.js中实现同步操作的3种实现方法
Dec 05 Javascript
js强制把网址设为默认首页
Sep 29 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
JS匹配日期和时间的正则表达式示例
May 12 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
如何利用JavaScript编写更好的条件语句详解
Aug 10 Javascript
prototype.js常用函数详解
Jun 18 #Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 #Javascript
Javascript中prototype的使用详解
Jun 18 #Javascript
jQuery无刷新上传之uploadify3.1简单使用
Jun 18 #Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 #Javascript
JavaScript的this关键字的理解
Jun 18 #Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 #Javascript
You might like
php生成圆角图片的方法
2015/04/07 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
javaScript语法总结
2016/11/25 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
Python群发邮件实例代码
2014/01/03 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
Python调用C语言的实现
2019/07/26 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
Go使用协程交替打印字符
2021/04/29 Golang
浅谈Redis中的RDB快照
2021/06/29 Redis