快速解决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 操作文件 实现方法小结
Jul 02 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 Javascript
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
js获取location.href的参数实例代码
Aug 02 Javascript
jquery的map与get方法详解
Nov 04 Javascript
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
JQuery球队选择实例
May 18 Javascript
jQuery满屏焦点图左右滚动特效代码分享
Sep 07 Javascript
ReactJs设置css样式的方法
Jun 08 Javascript
原生js实现无缝轮播图
Jan 11 Javascript
JavaScript实现滑动门效果
Jan 18 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
dedecms模板标签代码官方参考
2007/03/17 PHP
php 获取mysql数据库信息代码
2009/03/12 PHP
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
Python文档生成工具pydoc使用介绍
2015/06/02 Python
python直接访问私有属性的简单方法
2016/07/25 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
会计助理岗位职责
2014/02/17 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
奶茶店创业计划书
2014/08/14 职场文书
出国签证在职证明范本
2014/11/24 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
瘦西湖导游词
2015/02/03 职场文书
2015年社区工作总结
2015/04/08 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书