jQuery中冲突避免

  jQuery中须要用到$符号,若是其余js库也定义了$符号,那么就会形成冲突,会影响到js代码的正常执行,下面有几个不错的解决方法html

  1.引入noConflict(),将$替换为其余符号jquery

1  
2 var $j = jQuery.noConflict(); 
3 $j(document).ready(function(){ 
4 $j("#btn1").click(function(){ 
5 alert("Text: " + $j("#test").text()); 
6 }); 
7 }); 

缺点:引入了这段代码后,不只是当前的js文件,该html引用的全部js中,若是有用到jquery中的$,都得用$j来代替以前的$ 

方案2: 
ready函数是jquery的入口函数,能够 
将$(document).ready(function(){ 
替换成 
jQuery( document ).ready(function( $){} 
缺点:只对ready嵌套内的代码有效,对嵌套外的代码是无效的。若是你全部的逻辑,都在写ready函数中,那没问题。但咱们通常都会在ready函数以外写一些子函数,而后ready函数再去调用这些函数。这个方案对这些函数是无效的,所以这套方案有局限性。 

方案3(推荐,特别是开发js插件时): 

给js内容包上一个函数 函数

jQuery(function($){ 
//你的js代码放在这里(例如第二个方案提到的ready函数和子函数) 
//若是是js文件,其实就是在文件头部和尾部各加一行代码 
} 

spa

 (function($) { 
//你的js代码 
})(jQuery); 

这个方法,没有上面两个方案的缺点,只会影响到被包在jQuery(function($){}中的代码。 
不会影响到其余js代码,这一点很重要。试想一下,假如你写了一个js公共组件,该组件须要用到jquery,为了提升鲁棒性,需考虑$符号冲突问题。若是使用方案1,那么别人在使用时,还得遵照你的约定,把本身js代码中的$改为$,而若是使用方案3,既能避免$冲突对该组件的影响,又无须要求使用公共组件的人修改本身的代码。.net

 

 

文章原址:http://www.jb51.net/article/47028.htm插件

相关文章
相关标签/搜索