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 相关文章推荐
JQuery与Ajax常用代码实现对比
Oct 03 Javascript
jQuery ctrl+Enter shift+Enter实现代码
Feb 07 Javascript
jquery调用asp.net 页面后台的实现代码
Apr 27 Javascript
浅析jQuery中常用的元素查找方法总结
Jul 04 Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
详解关于vue2.0工程发布上线操作步骤
Sep 27 Javascript
基于Vue实现电商SKU组合算法问题
May 29 Javascript
MockJs结合json-server模拟后台数据
Aug 26 Javascript
基于小程序请求接口wx.request封装的类axios请求
Jul 02 Javascript
JavaScript最完整的深浅拷贝实现方式详解
Feb 28 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 一个页面执行时间类代码
2010/03/05 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
讲解Python中运算符使用时的优先级
2015/05/14 Python
python Django批量导入不重复数据
2016/03/25 Python
python字符串中的单双引
2017/02/16 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
应聘教师推荐信
2013/10/31 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
品牌转让协议书
2014/08/20 职场文书
珍惜资源的建议书
2014/08/26 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书