$ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (

返回值:jQueryjQuery.noConflict(extreme)

概述

将$和jQuery的控制权都交还给原来的库。用之前请考虑清楚!

这是相对于简单的 noConflict 方法更极端的版本,因为这将完全重新定义jQuery。这通常用于一种极端的情况,比如你想要将jQuery嵌入一个高度冲突的环境。注意:调用此方法后极有可能导致插件失效。

参数

extremeBoolean

传入 true 来允许彻底将jQuery变量还原

示例

描述:

完全将 jQuery 移到一个新的命名空间。

jQuery 代码:
var dom = {};
dom.query = jQuery.noConflict(true);
结果:
// 新 jQuery 的代码
dom.query("div p").hide();
// 另一个库 $() 的代码
$("content").style.display = 'none';
// 另一个版本 jQuery 的代码
jQuery("div > p").hide();

解决jQuery和其它库的冲突

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。通常,全局(global)对象都被很好的存储在jQuery命名空间里,所以当把jQuery和其它JavaScript库(如Prototype,MooTools或 YUI)一起使用时,不会引起冲突。

注意,默认情况下,jQuery用"$"作为它自身的快捷方式。

所以JQuery插件 中的$符合 也是可以直接使用的。

 

jQuery库在其它库之前导入

2. jQuery库在其它库之前导入

如果jQuery库在其它库之前就导入了,那么可以直接使用"jQuery"来做一些jQuery的工作。同时,可以使用"$"方法作为其它库的快捷方式。这里没有必要调用jQuery.noConflict()函数。示例如下:

 
   
  1. <html> 
  2. <head></head> 
  3. <body> 
  4. <p id="pp">test---prototype<p> 
  5. <p >test---jQuery<p> 
  6.  <!--先导入jQuery --> 
  7.  <script src="http://www.cnblogs.com/scripts/jquery-1.3.1.js" 
    type="text/javascript"></script> 
  8.  <!--后导入其它库 --> 
  9.  <script src="prototype-1.6.0.3.js" type="text/javascript"></script> 
  10. <script language="javascript"> 
  11.     jQuery(function(){   //直接使用 jQuery ,
    没有必要调用"jQuery.noConflict()"函数。  
  12.  
  13. 这里的意思就是,使用jQuery 来代替$来避免命名冲突
  14.         jQuery("p").click(function(){  
  15.             alert( jQuery(this).text() );  
  16.         })  
  17.     })  
  18.  
  19.     $("pp").style.display = 'none'; //使用prototype  
  20. </script> 
  21. </body> 
  22. </html> 
有了这些方式来解决冲突,就可以在项目中放心的引用jQuery了。
我也有这样的问题 


    <script src="http://www.cnblogs.com/js/jQuery/jQuery.js" type="text/javascript"></script> 


  <script type="text/javascript">

 $.noConflict(); //将变量$的控制权让渡<BR>    <

/script><

之后一直提示 $ is not function 

解决方法

1. 删除   $.noConflict();因为我只使用了 Jquery和Jquery的一些插件。他们都是用Jquery的全局变量。没必要去避免冲突

2.把所有的$换成JQuery 这样可以保证所有的,包括插件 都是 使用的决定 Jquery全局变量 

 
 
1.5  解决jQuery和其它库的冲突

在jQuery库中,几乎所有的插件都被限制在它的命名空间里。通常,全局(global)对象都被很好的存储在jQuery命名空间里,所以当把jQuery和其它JavaScript库(如Prototype,MooTools或 YUI)一起使用时,不会引起冲突。

注意,默认情况下,jQuery用"$"作为它自身的快捷方式。

1. jQuery库在其它库之后导入

在其它库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数来将变量$的控制权移交给其它JavaScript库。示例如下:

 
   
  1. <html> 
  2. <head></head> 
  3. <body> 
  4. <p id="pp">test---prototype<p> 
  5. <p >test---jQuery<p> 
  6.  <!-- 引入 prototype  --> 
  7.   <script src="prototype-1.6.0.3.js" type="text/javascript"></script> 
  8.   <!-- 引入 jQuery  --> 
  9.   <script src="http://www.cnblogs.com/scripts/jquery-1.3.1.js" 
    type="text/javascript"></script> 
  10.     <script language="javascript"> 
  11.         jQuery.noConflict();//将变量$的控制权移交给prototype.js  
  12.         jQuery(function(){//使用jQuery  
  13.              jQuery("p").click(function(){  
  14.                   alert( jQuery(this).text() );  
  15.              })  
  16.         })  
  17.  
  18.         $("pp").style.display = 'none'; //使用prototype  
  19.     </script> 
  20. </body> 
  21. </html> 

然后,就可以在程序里将jQuery ()函数作为jQuery对象的制造工厂。

此外,还有另一种选择。如果想确保jQuery不会与其它库冲突,但又想自定义一个比较短快捷方式,可以按照如下操作:

 
   
  1. //...省略其它代码...  
  2.  
  3. var $j = jQuery.noConflict();  //自定义一个比较短快捷方式  
  4. $j(function(){               //使用jQuery,利用自定义快捷方式 -- $j  
  5.     $j("p").click(function(){  
  6.         alert( $j(this).text() );  
  7.     })  
  8. })  
  9.  
  10. $("pp").style.display = 'none'; //使用prototype  
  11.  
  12. //...省略其它代码... 

可以自定义备用名称,例如jq、$J、awesomequery--任何你想要的名称都行。

如果不想给jQuery自定义这些备用名称,还是想使用$而不管其它库的$方法,同时又不想与其它库相冲突,那么可以使用如下两种解决方法:

其一:

 
   
  1. //...省略其它代码...  
  2.  
  3. jQuery.noConflict();               //将变量$的控制权让渡给prototype.js  
  4. jQuery(function($){               //使用jQuery设定页面加载时执行的函数  
  5.     $("p").click(function(){        //在函数内部继续使用 $ 方法  
  6.         alert( $(this).text() );  
  7.     })  
  8. })  
  9.  
  10. $("pp").style.display = 'none'; //使用prototype  
  11.  
  12. //...省略其它代码... 

其二:

 
   
  1. //...省略其它代码...  
  2.  
  3. jQuery.noConflict();                //将变量$的控制权让渡给prototype.js  
  4. (function($){                   //定义匿名函数并设置形参为$  
  5.     $(function(){                   //匿名函数内部的$均为jQuery  
  6.         $("p").click(function(){        //继续使用 $ 方法  
  7.             alert( $(this).text() );  
  8.         });  
  9.     });  
  10. })(jQuery);                     //执行匿名函数且传递实参jQuery  
  11.  
  12. $("pp").style.display = 'none'; //使用prototype  
  13.  
  14. //...省略其它代码... 

对于大部分代码而言,这应该是最理想的方式,因为可以通过改变最少的代码来实现全面的兼容性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值