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 相关文章推荐
JavaScript confirm选择判断
Oct 18 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
网站内容禁止复制和粘贴、另存为的js代码
Feb 26 Javascript
ext前台接收action传过来的json数据示例
Jun 17 Javascript
jQuery中delegate()方法用法实例
Jan 19 Javascript
AngularJS 让人爱不释手的八种功能
Mar 23 Javascript
ReactNative页面跳转实例代码
Sep 27 Javascript
jQuery实现div跟随鼠标移动
Aug 20 jQuery
Javascript获取某个月的天数
May 30 Javascript
详解vue-router 初始化时做了什么
Jun 11 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
浅析PHP Socket技术
2013/08/02 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
PDO::_construct讲解
2019/01/27 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
定义select的边框颜色
2008/04/28 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
以一段代码为实例快速入门Python2.7
2015/03/31 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
python用requests实现http请求代码实例
2019/10/31 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
关于Python解包知识点总结
2020/05/05 Python
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
挂科检讨书范文
2014/02/20 职场文书
党建工作经验交流材料
2014/05/25 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
导游词之上海豫园
2019/10/24 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL