Jquery库及其他库之间的$命名冲突解决办法

首先我们应该知道,在jquery中,$(美元符号)就是jquery的别名,也就是说使用$和使用jquery是一样的,在很多时候我们命名空间时,正是因为这个$而产生的冲突的发生。比如说:$('#xmlas')和JQuery('#xmlas') 虽然在写法上不同,但在实际上却是完全等同的。
要想解决这个冲突,其实最简单的方法就是使用不同的名称来命名,或者让执行代码认为是不同的命名空间即可。

一、 jQuery库在其他库之前导入,直接使用jQuery(callback)方法如:

 代码如下 复制代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--先导入jQuery -->
<script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script>
<!--后导入其他库 -->
<script src="prototype-1.6.0.3.js" type="text/javascript"></script>
</head>
<body>
<p id="pp">test---prototype</p>
<p >test---jQuery</p>

<script type="text/javascript">
jQuery(function(){ //直接使用 jQuery ,没有必要调用"jQuery.noConflict()"函数。
jQuery("p").click(function(){
       alert( jQuery(this).text() );
});
});

$("pp").style.display = 'none'; //使用prototype
</script>
</body>
</html>

二、jQuery库在其他库之后导入,使用jQuery.noConflict()方法将变量$的控制权让渡给其他库,有以下几种方式:

 代码如下 复制代码

<script type="text/javascript">
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
jQuery(function(){ //使用jQuery
       jQuery("p").click(function(){
              alert( jQuery(this).text() );
       });
});

$("pp").style.display = 'none'; //使用prototype
</script>

//代码二

 代码如下 复制代码

<script type="text/javascript">
var $j = jQuery.noConflict(); //自定义一个比较短快捷方式
$j(function(){ //使用jQuery
       $j("p").click(function(){
       alert( $j(this).text() );
       });
});

$("pp").style.display = 'none'; //使用prototype
</script>

码三

 代码如下 复制代码

<script type="text/javascript">
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
jQuery(function($){ //使用jQuery
       $("p").click(function(){ //继续使用 $ 方法
       alert( $(this).text() );
       });
});

$("pp").style.display = 'none'; //使用prototype
</script>

//代//代码四

 代码如下 复制代码

<script type="text/javascript">
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
(function($){ //定义匿名函数并设置形参为$
       $(function(){ //匿名函数内部的$均为jQuery
              $("p").click(function(){ //继续使用 $ 方法
                     alert($(this).text());
              });
       });
})(jQuery); //执行匿名函数且传递实参jQuery

$("pp").style.display = 'none'; //使用prototype

/*********************************************************************/
jQuery(document).ready(function(){ //一加载页面的时候就将权利让出去
       jQuery.noConflict();
});
</script>

除了上面的方法之外,我们还可以采用第二种方法来解决冲突的问题,那就是最笨但最有效的解决方法:用自定义的命名空间来避免冲突。
比如说需要的项目名称为xmlas,那么我们原来的代码:

 代码如下 复制代码

    $('contentArea').show()  

就可以写成以下这种形式:

 代码如下 复制代码

    XMLAS('contentArea').show()  

3.在jquery代码中,当遇到冲突的时候我们可以使用$符号,这需要我们在ready事件中添上以下代码:

 代码如下 复制代码

    jQuery(document).ready(function($) {   
    //你在这里可以放心的使用$了  
    });  

当然,您也可以简写成下面的形式:

 代码如下 复制代码
    jQuery(function($){   
    //这里为使用$的代码  
    });  

 

由此,根据第一个方法来实现的完整代码如下:

 代码如下 复制代码
    //jquery库与其他库冲突的完整解决办法  
    <script type="text/javascript" src="photolist.js"></script>   
    <script type="text/javascript" src="jquery.js"></script>   
    <script type="text/javascript">   
    $.noConflict();   
    jQuery(function($) {   
    //使用了$的jquery代码  
    });   
    //这里是你的其他js库代码   
    </script>

 

当然,你也可以对上面的完整代码进行一步的简化,简化代码如下:

 代码如下 复制代码

    //简化后的代码  
    $.noConflict()(function(){   
    //这里是你的带$的jquery代码  
    });   
    //这里是其他库的代码 

时间: 2024-09-28 13:45:13

Jquery库及其他库之间的$命名冲突解决办法的相关文章

jQuery命名$冲突怎么解决?jQuery命名$冲突解决办法

下面一Discuz为例子,在Discuz中我们会碰到common.js与Jquery冲突了,那么要如何解决 Discuz中common.js与Jquery冲突的方法 1.将$送给common.js 打开jQuery的源代码,在最后面添加 jQuery.noConflict(); 2.替换特效JS文件中的$符号 打开特效JS文件,搜索 $( 替换为 jQuery(

【DG】DG备库报ORA-28000: the account is locked的解决办法

[DG]DG备库报ORA-28000: the account is locked的解决办法 测试用户为lhr现象:主备库的lhr用户的状态都是OPEN,但是,备库连接的时候报ORA-28000: the account is locked错误.在主库执行"alter user lhr identified by lhr account unlock;"同步到备库也不能解决,在备库该命令不能执行. 解决:重启DG环境的备库实例即可 参考:ORA-28000 On Active Data

Jquery库及其他库之间的$命名冲突怎么办

 首先我们应该知道,在jquery中,$(美元符号)就是jquery的别名,也就是说使用$和使用jquery是一样的,在很多时候我们命名空间时,正是因为这个$而产生的冲突的发生.比如说:$('#xmlas')和JQuery('#xmlas') 虽然在写法上不同,但在实际上却是完全等同的. 要想解决这个冲突,其实最简单的方法就是使用不同的名称来命名,或者让执行代码认为是不同的命名空间即可. 一. jQuery库在其他库之前导入,直接使用jQuery(callback)方法如: 代码如下 <html

如何解决Jquery库及其他库之间的$命名冲突_jquery

首先我们应该知道,在jquery中,$(美元符号)就是jquery的别名,也就是说使用$和使用jquery是一样的,在很多时候我们命名空间时,正是因为这个$而产生的冲突的发生.比如说:$('#xmlas')和JQuery('#xmlas') 虽然在写法上不同,但在实际上却是完全等同的. 要想解决这个冲突,其实最简单的方法就是使用不同的名称来命名,或者让执行代码认为是不同的命名空间即可. 一. jQuery库在其他库之前导入,直接使用jQuery(callback)方法如: 复制代码 代码如下:

Jquery命名冲突解决的五种方案分享_jquery

因为许多 JavaScript 库使用 $ 作为函数或变量名,jquery也一样.其实$只是jquery的一个别名而已,假如我们需要使用 jquery 之外的另一 js 库,我们可以通过调用 $.noConflict() 向该库返回控制权.下面是收集到解决这一问题的五种方案,总有一种你会用得上的. 例一: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w

解决JQuery中美元符号($)与$命名冲突

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

jQuery中setInterval、setTimeout找不到对象解决办法

最近碰到个问题,在使用jquery写定时器时,总是会出现fn不存在的错误提示以前写定时器的时候,总是习惯直接 setInterval("fn()",2000); 最近碰到个问题,在使用jquery写定时器时,总是会出现fn不存在的错误提示,如下 $(function(){setInterval("fn()",2000);}) 解决方法是去掉引号和括号,采用最原始的方法 $(function(){setInterval(fn,2000);}) 另外一种就是在书写jq的

Python和php之间通信中文乱码解决办法

即使在urlencode之前str.decode("cp936″).encode("utf-8″)做了编码转换也是没用的.后来查询手册查到一个urllib.quote()函数,用此方法成功解决! python端:  代码如下 复制代码 str = "中文" str = urllib.quote(str.decode("cp936").encode("utf-8")) postData = {} postData['str']

JQuery UI DatePicker中z-index默认为1的解决办法_jquery

在网上也没能找到有效的解决办法,下面我提供一种看似投机的办法: 复制代码 代码如下: $("#txtFillInDate").datepicker({ monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], dayNamesMin: ['日', '一', '二', '三', '四', '五', '六'], dateFormat: 'yy-mm-dd', beforeS