快速解决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温习的一些笔记 基础常用知识小结
Jun 22 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
May 15 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
Jul 09 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
javascript面向对象程序设计(一)
Jan 29 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
Javascript 普通函数和构造函数的区别
Nov 05 Javascript
基于JQuery及AJAX实现名人名言随机生成器
Feb 10 Javascript
浅谈JS的原型和继承
May 08 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 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
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
php简单图像创建入门实例
2015/06/10 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
php 数据结构之链表队列
2017/10/17 PHP
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
利用python获得时间的实例说明
2013/03/25 Python
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
Python制作CSDN免积分下载器
2015/03/10 Python
利用python代码写的12306订票代码
2015/12/20 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
Python socket聊天脚本代码实例
2020/01/02 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
俞敏洪北大演讲稿
2014/05/22 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书