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 相关文章推荐
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
Apr 01 Javascript
纯javascript实现四方向文本无缝滚动效果
Jun 16 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
Sep 04 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
小程序实现分类页
Jul 12 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
Jul 19 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 Javascript
构建一个JavaScript插件系统
Oct 20 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转成EXE文件
2006/10/09 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
Python+django实现简单的文件上传
2016/08/17 Python
Python批量更改文件名的实现方法
2017/10/29 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
什么是View State?
2013/01/27 面试题
世界经理人咨询有限公司面试
2014/09/23 面试题
生产车间主任的个人自我鉴定
2013/10/25 职场文书
市场营销毕业求职信
2014/08/07 职场文书
助残日活动总结
2014/08/27 职场文书
综治目标管理责任书
2015/05/11 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL