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的分页控件(C#)
Jan 06 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
JQuery的read函数与js的onload不同方式实现
Mar 18 Javascript
JavaScript新窗口与子窗口传值详解
Feb 11 Javascript
js中document.write的那点事
Dec 12 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
Apr 01 Javascript
通过npm引用的vue组件使用详解
Mar 02 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 Javascript
JavaScript实现精美个性导航栏筋斗云效果
Oct 29 Javascript
vue 使用eventBus实现同级组件的通讯
Mar 02 Javascript
vue npm install 安装某个指定的版本操作
Aug 11 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与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
PHP+MySql+jQuery实现的"顶"和"踩"投票功能
2016/05/21 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
javascript 函数速查表
2010/02/07 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
python设置表格边框的具体方法
2020/07/17 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
Ajax和javascript的区别
2013/07/20 面试题
环保建议书300字
2014/05/14 职场文书
学校安全生产承诺书
2014/05/23 职场文书
社区禁毒工作方案
2014/06/02 职场文书
应届生自荐信
2014/06/30 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
社保委托书怎么写
2014/08/02 职场文书
村级四风对照检查材料
2014/08/24 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript