轻松理解jquery插件机制

jquery之所以如此流行,很大程度上得益于其开放性及可扩展性。jquery出现至今已经有大量优秀的插件出现。

jquery中提供了与插件机制有关的两种实现方式:

一、jQuery.extend(object):该方法用于扩展jQuery对象本身,用来在jQuery命名空间上增加新函数。参数object即为用以扩展jQuery对象。
二、jQuery.fn.extend(object):该方法用于给jQuery元素集来提供新的方法,因此通常用来制作插件。

下面在一个html文件里面演示了这两种用法。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 <title>jQuery Playground</title> 
 <link title="green" media="screen" href="css/green.css" type="text/css" rel="stylesheet" /> 
 <script type="text/javascript" src="js/jquery.js"></script> 
 <script type="text/javascript"> 
  jQuery.fn.extend({ 
    colorize: function(color) { 
      return this.each( 
    function() { 
     $(this).css("background", color); 
    } 
   ); 
    } 
  }); 
  jQuery.extend({ 
    min:  function(a, b) { 
     return a < b ? a : b; 
    }, 
    max:  function(a, b) { 
     return a > b ? a : b; 
    } 
  });   
  $(document).ready(function(){ 
    $("#testbutton").click( 
     function(){ 
      /* jQuery插件机制 */
      /* 
      $("#div3").html("min(2, 3): " + $.min(2, 3) 
        + "<br/>max(4, 5):" + $.max(4, 5)); 
      $("#div3").html("min(2, 3): " + jQuery.min(2, 3) 
        + "<br/>max(4, 5):" + jQuery.max(4, 5)); 
      */
         $(".first").colorize("red"); 
     } 
    ); 
  }); 
 </script> 
 <script type="text/javascript"> 
    $(document).ready(function(){ 
  $("#testbutton").click( 
   function(){ 
   } 
  ); 
 });   
 </script> 
 <style type="text/css"> 
  .rose { 
   background-color: #FFE4E1; 
  } 
  .indianred{ 
   background-color: #CD5C5C; 
  } 
  .borderstyle { 
   border: 13px  solid #CD5C5C; 
  } 
  fieldset { 
  width:240px; 
  margin:10px; 
  padding:10px; 
  border: 1px  solid #449f00; 
  } 
  .test{ 
    color:white; 
   background-color: green; 
  } 
  .wrap { 
  background-color: green; 
  }
  #div1 { 
   border: 3px  solid green; 
   margin:2px; 
  }
  #div2 { 
   border: 3px  solid green; 
   margin:2px; 
  }
  #div3 { 
   border: 3px  solid green; 
   margin:2px; 
   color:white; 
   background-color: green; 
  }   
 </style> 
</head> 
<body> 
<div id="wrapper"> 
  <h1>jQuery Playground</h1> 
  <ul id="nav"> 
      <li><a class="current" href="index.html">jQuery核心及工具</a></li> 
      <li><a href="#"></a></li> 
  </ul> 
  <div id="content"> 
      <input type="button" id="testbutton" value="测试" /> 
      <br/><br/> 
    <div id="div1"> 
    <p class="first">第一段文字,class为first。</p> 
    <p class="second">第二段文字,class为second。</p> 
   </div> 
    <div id="div2"> 
    <p class="first">第一段文字,class为first。</p> 
    <p class="second">第二段文字,class为second。</p> 
   </div> 
   <div id="div3"> 
    这里用来显示结果. 
    </div> 
  </div> 
  <div id="foot">Powered By Dennis Ji.</div> 
</div> 
</body> 
</html>