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操作页面表格,元素的一些技巧
Feb 02 Javascript
用JAVASCRIPT如何给<textarea></textarea>赋值
Apr 20 Javascript
JS面向对象编程 for Cookie
Sep 19 Javascript
js精度溢出解决方案
Dec 02 Javascript
jQuery如何取id有.的值一般的方法是取不到的
Apr 18 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
Aug 05 Javascript
对js eval()函数的一些见解
Aug 15 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
Sep 11 Javascript
js实现拖动缓动效果
Jan 13 Javascript
Angular利用HTTP POST下载流文件的步骤记录
Jul 26 Javascript
Vue Element校验validate的实例
Sep 21 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP遍历数组的几种方法
2012/03/22 PHP
php文件操作实例代码
2012/05/10 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
python多线程使用方法实例详解
2019/12/30 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
用python批量移动文件
2021/01/14 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
小学教师听课制度
2014/02/01 职场文书
个人授权委托书
2014/04/03 职场文书
80后婚前协议书范本
2014/10/24 职场文书
年会主持人开场白台词
2015/05/29 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
Python绘制散乱的点构成的图的方法
2022/04/21 Python