快速解决jQuery与其他库冲突的方法介绍


Posted in Javascript onJanuary 02, 2014

通常,当在同一个页面上使用jQuery和其他库时,全局名称$的定义是最大的争论和冲突的焦点。众所周知,jQuery使用$作为jQuery名称的别名,并将其用于jQuery公开的每一个功能,但是其他库,最著名的就是Prototype,也使用$名称。

1. jQuery提供了$.noConflict()实用函数用来放弃对$标识符的占用,以便其他库使用它。

该函数的语法如下:
$.noConflict(jqueryToo)

将标识符$的控制权归还给其他库,允许在页面上混合使用jQuery与其他库。一旦执行了该函数,必须使用jQuery标识符而不是$标识符来调用jQuery的功能,

你也可以放弃jQuery标识符(可选)

应该在包含了jQuery之后,但尚未包含冲突库之前调用这个方法。

尽管使用的是jQuery标识符,但因为$是jQuery的别名,所以在应用$.noConflict()之后所有jQuery的功能依然可用。我们可以定义更短的,但没有冲突的jQuery别名,例如

var  $j = jQuery ;

2. 另一个常见的习惯用法是创建一个作用域环境,在该环境中$标识符指向jQuery对象,在扩展jQuery的时候这是个常用技巧,特别是对于插件作者来说,他们不可能对于页面开发者是否已经调用$.noConflict()作出任何假设,当然也不能自行调用此函数以免破坏页面开发者的意愿,

这个习惯用法如下:
(function($) { }) (jQuery);
(function($) { })

这部分声明了一个函数并用圆括号括起来,由此生成一个表达式,这个表达式的结果是对一个匿名函数的引用,这个函数期望传入单个参数并将其命名为$,在函数主体中,可以通过$标识符来引用任何传递给这个函数的东西。因为参数声明优先于全局作用域中任何类似的命名标识符,所以任何在函数外定义的$值在函数内都会被传入的参数所代替。

(jQuery)

在匿名函数上执行函数调用,将jQuery对象作为参数传递

在函数外部不管$标识符是否已经在Prototype或其他库中定义,在函数体内它总是指向jQuery对象。

当使用这个技巧时,外部声明的$在函数体内是不可用的。

3. 第二种的用法的一个变体也经常用于声明就绪处理函数,从而形成了第三种语法,
jQuery( function($){
})

当编写可重用的组件并且这些组件可能会用于已经使用了$.noConflict()的页面时,最好对$的定义采取这种预防措施。

Javascript 相关文章推荐
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
模仿百度三维地图的js数据分享
May 12 Javascript
关于js遍历表格的实例
Jul 10 Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
js实现手机发送验证码功能
Mar 13 Javascript
微信小程序使用wxParse解析html的方法教程
Jul 06 Javascript
发布Angular应用至生产环境的方法
Dec 10 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
Jan 30 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
微信小程序 自定义复选框实现代码实例
Sep 04 Javascript
微信小程序实现点赞业务
Feb 10 Javascript
js/jQuery简单实现选项卡功能
Jan 02 #Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
Dec 31 #Javascript
js判断字符长度以及中英文数字等
Dec 31 #Javascript
checkbox全选所涉及到的知识点介绍
Dec 31 #Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 #Javascript
js类式继承的具体实现方法
Dec 31 #Javascript
利用javascript判断文件是否存在
Dec 31 #Javascript
You might like
Laravel向公共模板赋值方法总结
2019/06/25 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
javascript新手语法小结
2008/06/15 Javascript
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
python设置windows桌面壁纸的实现代码
2013/01/28 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
深入浅析Python中的yield关键字
2018/01/24 Python
Python格式化输出%s和%d
2018/05/07 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Python timeit模块的使用实践
2020/01/13 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
学生就业推荐信
2013/11/13 职场文书
应用外语系自荐信
2014/06/26 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
交通事故协议书范本
2014/11/18 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers