当前位置:  编程技术>WEB前端

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

    来源: 互联网  发布时间:2014-08-25

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

通常,当在同一个页面上使用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()的页面时,最好对$的定义采取这种预防措施。


    
 
 

您可能感兴趣的文章:

  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • Oracle与JSDK4.0环境变量冲突,如何解决(在线等待)?
  • 多jdk环境下安装多个tomcat冲突解决配置方法
  • 解决grails服务端口冲突的办法(grails修改端口号)
  • php中$美元符号与Zen Coding冲突问题解决方法分享
  • 如何解决linux中的声音冲突的问题
  • 如何解决C语言,函数名与宏冲突
  • Linux下安装Tomcat后与Oracle冲突的解决
  • jQuery$命名冲突怎么办如何解决
  • asp.net ajax时用alert弹出对话框与验证控件冲突的解决方法
  • 解决自定义$(id)的方法与jquery选择器$冲突的问题
  • PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
  • MySQL中字段名和保留字冲突的解决办法
  • sqlserver数据库最大Id冲突问题解决方法之一
  • mysql 双向同步的键值冲突问题的解决方法分享
  • 解决Oracle XDB与Tomcat等的8080端口的冲突
  • Android之ScrollView嵌套ListView和GridView冲突的解决方法
  • ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
  • JQuery的$和其它JS发生冲突的快速解决方法
  • 使用python搭建Django应用程序步骤及版本冲突问题解决
  • 创建共享库文件(.so)版本冲突问题如何解决
  • secureCRT下Linux终端汉字乱码解决方法
  • 实现在同一方法中获取当前方法中新赋值的session值解决方法
  • andriod中UIScrollView无法正常滚动的解决方法
  • 解决 select 挡住div的解决方法
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • GET方法URL中传递中文参数乱码的解决方法
  • windows server2008上PowerBuilder程序系统错误解决方法
  • asp.net post方法中参数取不出来的解决方法
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • MYSQL安装时解决要输入current root password的解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • VS2005解决方案管理器中不显示解决方案节点的解决办法 iis7站长之家
  • 安装hadoop时出现内存不够及其它一些常见的hadoop错误解决办法
  • 解决多级索引速度慢的问题可否像解决多级页表那样使用TLB?
  • Linux 下c++开发error while loading shared libraries问题解决
  • Liunx命令tar压缩出现如下错误该怎么解决?急需解决!感谢
  • linux/centos安装nginx常见错误及解决办法
  • 求数据库解决方案===求数据库解决方案
  • c/c++服务器程序内存泄露问题分析及解决
  • 硬盘分区后出现的问题,急待解决!!问题解决马上给分。
  • HTML <!DOCTYPE> 标签用法详解及如何解决<!DOCTYPE html>未声明时导致页面无效的问题
  • 感觉java胜任大型企业级的任务绰绰有余了,可是面对一些小些企业的解决方案听的并不是很多,所以我希望听听各位的看法(如果实际解决过这
  • Windows C/ C++堆相关问题及解决思路
  • 今年广东省中等职业技术学校技能大赛的题目(不要小看),网上查了很久,没有解决办法;求高手解决。
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 现在在公司遇到一个解决不了的页面缓存问题,在线等到下班,谁解决谁100分


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3