jQuery与其他库冲突的方法介绍

 本篇文章主要是对快速解决jQuery与其他库冲突的方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

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

时间: 2024-09-17 04:07:35

jQuery与其他库冲突的方法介绍的相关文章

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

通常,当在同一个页面上使用jQuery和其他库时,全局名称$的定义是最大的争论和冲突的焦点.众所周知,jQuery使用$作为jQuery名称的别名,并将其用于jQuery公开的每一个功能,但是其他库,最著名的就是Prototype,也使用$名称. 1. jQuery提供了$.noConflict()实用函数用来放弃对$标识符的占用,以便其他库使用它. 该函数的语法如下:$.noConflict(jqueryToo) 将标识符$的控制权归还给其他库,允许在页面上混合使用jQuery与其他库.一旦执

jQuery与其它库冲突的解决方法_jquery

(注意:默认情况下,jQuery用$作为自身的缩写而以) 如果jQuery类库和别的类库冲突的话,可以使用jQuerynoConflict()函数来将变量$的控制权移交出给其它的javaScipt库.看下面小片断代码 <script type="text/javascript" src="../JS/JsCOM.js"></script> <script type="text/javascript" src=&quo

jquery live()重复绑定的解决方法介绍

 本篇文章主要是对jquery中live()重复绑定的解决方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Query中.live()方法的使用方法    今天在写代码的时候遇到一个问题,直接上代码看: $(function(){            $(".file").live("click",function(){                     var task_name=$(this).text();            

jquery中的$(document).ready()使用方法介绍

 本篇文章主要是对jquery中的$(document).ready()使用方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 window.onload = function(){ alert("welcome"); } 这样的写法作用是希望在页面加载完,自动执行定义js代码(function).   $(document).ready(function(){.... })这个函数是用来取代页面中的window.onload;   document.ready()

jquery live()重复绑定的解决方法介绍_jquery

Query中.live()方法的使用方法 今天在写代码的时候遇到一个问题,直接上代码看:$(function(){           $(".file").live("click",function(){                    var task_name=$(this).text();                    $("#selecting tbody").append("<trclass=gradeA

jQuery避免$符和其他JS库冲突的方法对比

 jQuery中需要用到$符号,如果其他js库也定义了$符号,那么就会造成冲突,会影响到js代码的正常执行,下面有几个不错的解决方法,大家可以参考下 jQuery中需要用到$符号,如果其他js库(例如大名鼎鼎的prototype)也定义了$符号,那么就会造成冲突,会影响到js代码的正常执行.jqeury提供了一些方案来避免这个问题,让我们来看看这几个方案有什么区别    方案1:  引入noConflict(),将$替换为其他符号   代码如下: var $j = jQuery.noConfli

jQuery避免$符和其他JS库冲突的方法对比_jquery

jQuery中需要用到$符号,如果其他js库(例如大名鼎鼎的prototype)也定义了$符号,那么就会造成冲突,会影响到js代码的正常执行.jqeury提供了一些方案来避免这个问题,让我们来看看这几个方案有什么区别 方案1: 引入noConflict(),将$替换为其他符号 复制代码 代码如下: var $j = jQuery.noConflict(); $j(document).ready(function(){ $j("#btn1").click(function(){ aler

导入extjs、jquery 文件时$使用冲突问题解决方法

 在html页面中,没有导入jquery文件时,可以正常保存,而导入jquery文件后,则不能不存了,发现导入的jquery文件和现有的extjs文件冲突了 1.在最近做项目时,在html页面中,没有导入jquery文件时,可以正常保存,而导入jquery文件后,则不能不存了    经过调试后,发现导入的jquery文件和现有的extjs文件冲突了(原因是$符号的冲突)    jQuery与ExtJS之间发生冲突,但是在非IE内核下是可以的,是由于$符号的冲突,解决办法就是把jQuery的$符号

jQuery中阻止冒泡事件的方法介绍_jquery

一.冒泡事件简介 当我们点击一个控件的时候,如果包括这个控件的父控件也有click事件,则会继续执行.比如:div下的a都有click事件,点击a的时候,会alert出现2次.这个现象叫做冒泡事件. 这个事件从原始元素开始一直冒泡到DOM树的最上层.目标元素: 任何一个事件的目标元素都是最开始的那个元素,在我们的这个例子中也就是按钮,并且它在我们的元素对象中以属性的形式出现.使用事件代理的话我们可以把事 件处理器添加到一个元素上,等待一个事件从它的子级元素里冒泡上来,并且可以很方便地得知这个事件