您的位置:首页 > Web前端 > JQuery

jQuery名称冲突的解决

2015-10-14 11:40 609 查看
     许多 JavaScript 库使用 $ 作为函数或变量名,jquery也一样。其实$只是jquery的一个别名而已,假如我们需要使用 jquery 之外的另一 js 库,使用函数名调用函数时,便可能会有冲突,要想解决这个冲突,可以通过调用 $.noConflict() 向该库返回控制权。以下是解决函数冲突的5种方法,或许你能用得上。
     例一: 代码如下:
               <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html>
     <head>
          <title>
resolve conflict 1 
</title>

          <script type="text/javascript" src="/jquery/jquery.js"></script>
          <script>
               $.noConflict();
               jQuery(document).ready(function(){
                    jQuery("button").click(function(){
                         jQuery("p").text("jQuery 仍在运行!");
                    });
               });
          </script>
     </head>
     <body>
          <p>这是一个段落</p>
          <button>测试</button>
     </body>
</html>

     例二: 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
     <head> 
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
         <title> resolve conflict 2 </title> 
         <!-- 引入 prototype --> 
         <script
type="text/javascript"  src="prototype-1.6.0.3.js" ></script> 
         <!-- 引入 jQuery --> 
         <script  type="text/javascript"
src="http://www.cnblogs.com/scripts/jquery-1.3.1.js"
></script> 
     </head> 
     <body> 
         <p id="pp">test---prototype</p> 
         <p >test---jQuery</p> 
         <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> 
</body> 
</html> 

例三,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
     <head> 
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
         <title> resolve conflict 3</title> 
         <!-- 引入 prototype --> 
         <script src="prototype-1.6.0.3.js" type="text/javascript"></script> 
         <!-- 引入 jQuery --> 
         <script src="http://www.cnblogs.com/scripts/jquery-1.3.1.js" type="text/javascript"></script> 
     </head> 
     <body> 
         <p id="pp">test---prototype</p> 
         <p >test---jQuery</p> 
         <script type="text/javascript"> 
              jQuery.noConflict(); //将变量$的控制权让渡给prototype.js 
              jQuery(function($){ //使用jQuery 
                   $("p").click(function(){ //继续使用 $ 方法 
                        alert( $(this).text() ); 
                   }); 
              }); 
              $("pp").style.display = 'none'; //使用prototype 
         </script> 
     </body> 
</html> 

     例四: 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
     <head> 
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
         <title> resolve conflict 4 </title> 
         <!-- 引入 prototype --> 
         <script src="prototype-1.6.0.3.js" type="text/javascript"></script> 
         <!-- 引入 jQuery --> 
         <script src="http://www.cnblogs.com/scripts/jquery-1.3.1.js" type="text/javascript"></script> 
     </head> 
     <body> 
         <p id="pp">test---prototype</p> 
         <p >test---jQuery</p> 
         <script type="text/javascript"> 
              jQuery.noConflict(); //将变量$的控制权让渡给prototype.js 
              (function($){ //定义匿名函数并设置形参为$ 
                   $(function(){ //匿名函数内部的$均为jQuery 
                        $("p").click(function(){ //继续使用 $ 方法 
                        alert($(this).text()); 
                        }); 
                   }); 
              })(jQuery); //执行匿名函数且传递实参jQuery 
              $("pp").style.display = 'none'; //使用prototype 
</script> 
</body> 
</html> 

     例五: 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html>

bb6b
     <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title> resolve conflict 5 </title> 
     <!--先导入jQuery --> 
     <script src="http://www.cnblogs.com/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 前端