Jquery的$命名冲突解决

问题描述:

  在Jquery库中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$(‘#msg‘)等同于JQuery(‘#msg‘)的写法。

  当引入多个js库后,其它的js库中也定义了$符号的话,就导致在使用$命名符时jquery的$和其它框架的$产生冲突(这里的冲突也和js库文件的引入顺序有关)。

情况举例:

//  js引入顺序不同的结果 ($ 永远代表最后一个定义$的js库的符号)

// --1<script src="prototype.js" type="text/javascript"/><script src="jquery.js" type="text/javascript"/>// -- $代表的是jquery中定义的$符号,也可写成JQuery(‘body‘).hide()。

// --2<script src="jquery.js" type="text/javascript"/><script src="prototype.js" type="text/javascript"/>// -- $代表的prototype.js中定义的$符号,如果我们想要调用jquery.js中的工厂选择函数功能的话,只能用全称写法JQuery(‘body‘).hide()。

解决冲突:

  jquery提供了一个noConfilict的API来解决。

使用方法:

jQuery.noConflict();      // 运行这个函数将变量$的控制权让渡给第一个实现它的那个库。
jQuery.noConflict(true);      // 将$和jQuery的控制权都交还给原来的库。

常用汇总:

1、将JQuery对$的控制权让给其他框架
JQuery.noConflict();     // 返回值是JQuery;jquery.js中的$无法再使用,只能使用jquery.js中$的全称JQuery。
2、自定义JQuery的别名 (当使用JQuery.noConflict()方法之后,可为JQuery重定义别名,来简化全称的写法)
var $j = JQuery.noConflict();
$j(‘body‘).hide();     // 此处$j就代表JQuery 

3、使用语句块,在语句块中仍然使用jquery.js中定义的$

// 将$的控制权让出,使用jQuery的$ (或 直接使用jquery)JQuery.noConflict();
JQuery(document).ready(function($){
  $(‘body‘).hide();     // 此时在整个ready事件的方法中使用的$都是jquery.js中定义的$。  // JQuery(‘body‘).hide();    // 等同$的使用 }); 
或如下:
// 定义匿名函数并设置行参为$
(function($){
  .....
  $(‘body‘).hide();     // 此时在这个语句块中使用的都是jquery.js中定义的$。
})(JQuery)

或如下:
// 自定义别名后,使用语句块var $j = jQuery.noConflict();$j(function(){    $j("p").click(function(){       alert("ok");    }) ;    });

注意:语句块的方法使用非常有用,在写自定义jquery插件时,应都使用这种写法,因为我们不知道具体工作过程中是如何顺序引入各种js库的,而使用语句块的写法可屏蔽冲突。

博文转自:

解决jquery$命名符和其它框架的冲突问题

Jquery的$命名冲突

时间: 2024-10-07 08:47:06

Jquery的$命名冲突解决的相关文章

Jquery的$命名冲突(转)

Jquery的$命名冲突: 在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法.然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突.下面以引入两个库文件jquery.js和prototype.js为例来进行说明. 第一种情况:jquery.js在prototype.js之后进行引入,如: <script src="prototype.js&

Jquery的$命名冲突:

Jquery的$命名冲突:

jQuery库(noConflict)冲突解决机制

许多的JS框架类库都选择使用$符号作为函数或变量名,而且在实际的项目开发中,使用模板语言的话有可能"$"符号即为该模板语言的关键字.例如Veclocity模板语言,$是关键字.与jQuery一起使用可能会存在冲突(页面中直接写jq代码,引入的js文件不存在该问题).吐槽下为啥这么多js库喜欢用$($ is money?). jQuery是使用$符号作为函数或变量名最为典型的一个.在jQuery中,$符号只是window.jQuery对象的一个引用,因此即使$被删除,jQuery依然能保

jQuery UI与jQuery easyUI的冲突解决办法

jQuery UI与jQuery easyUI都是基于jQuery开发的.难免里面会有些方法名冲突! 因此对jQuery.easyui其中的两个方法名:resizable 和 draggable进行替换, 分别替换为resiz_able和dragg_able,即可!

JQuery的$命名冲突详细解析

在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法.然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就发生了冲突 在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法.然而,当我们引入多个js库后,在另外一个js库中也定义了$符号的话,那么我们在使用$符号时就

Jquery的$命名冲突

一.使用JQuery.noConflict() 该方法的作用就是让Jquery放弃对$的所有权,将$的控制权交还给prototype.js,因为jquery.js是后引入的,所以最后拥有$控制权的是jquery.它的返回值是JQuery.当在代码中调用了该 方法以后,我们就不可以使用$来调用jquery的方法了,此时$就代表在prototype.js库中定义的$了.如下: JQuery.noConflict(); //此处不可以再写成$('#msg').hide(),此时的$代表prototyp

Jquery的命名冲突

$是Jquery的别名,为了编码方便,我们可以使用$符号来调用Jquery的函数.然而,当我们引入多个JS库的时候,如果另外一个库中也引用了$符号作为别名的话,那么我们在使用$符号的时候,由于同一个作用域内,重复定义了相同的变量而产生错误.为此,我们要重新定义Jquery的别名,代码如下: var $j=JQuery.noConflict(); $j("#id").show();

echshop jquery与transpart冲突解决?

<script type="text/javascript">$(function() {window.__Object_toJSONString = Object.prototype.toJSONString;delete Object.prototype.toJSONString;});</script>

jQuery解决引用多个JavaScript库引起的$命名冲突的问题

在某些情况下,我们可能会在一个页面中使用多个JavaScript库,由于多个库中都是用$标识符,因此我们需要一种解决该命名冲突的方法,jQuery的noConflict()方法很好的解决了这个问题.jQuery调用该方法会把对$标识符的控制权限让渡给其他库使用. 参考示例如下: <script src="prototype.js"></script> <!-- 引用的库1 --> <script src="jquery.js"