偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

翻譯jquery官方的插件制作方法

開發(fā) 前端
有時(shí)候你想重復(fù)使用同一個(gè)代碼塊,舉例:你想寫一方法,你可以用這個(gè)方法,選擇做一系列的選擇操作,所以你想創(chuàng)造一個(gè)插件。

有時(shí)候你想重復(fù)使用同一個(gè)代碼塊,舉例:你想寫一方法,你可以用這個(gè)方法,選擇做一系列的選擇操作,所以你想創(chuàng)造一個(gè)插件。

翻譯jquery官方的插件制作方法

jquery怎么樣工作:jquery對(duì)象方法(jquery Object Methods)

在寫自己的插件之前,我們必須明白下面這段代碼是如何工作的:

  1. $( "a" ).css( "color""red" ); 

這是一段簡(jiǎn)潔實(shí)用的jquery代碼段,但是你知道jquery幕后是如何工作的么?當(dāng)你只用 “$"函數(shù)選擇元素的時(shí)候,它返回了一個(gè)

jquery對(duì)象。這個(gè)對(duì)象包含了所有jquery可以調(diào)用的方法,例如,你肯定已經(jīng)使用過這些(.css(), .click()…等等)。

這些方法適用于你用jquery選擇器選擇出來的所有元素。jquery對(duì)象的這些方法是從$.fn object 繼承出來的。

$.fn 對(duì)象包含了所有jquery的對(duì)象方法,如果你想寫自己的方法增加到j(luò)query, 你需要把你的自定義方法寫在$.fn上。

基本的插件制作方法:

例如我們想制作一個(gè)greenify插件,用這個(gè)插件來設(shè)置一個(gè)dom元素的文字為綠色的。所以我們把一個(gè)叫g(shù)reenify得方法增加到

$.fn上,它跟其他jquery對(duì)象方法一樣。

 

  1. $.fn.greenify = function() {     this.css( "color""green" ); };  $( "a" ).greenify(); // 使得所有鏈接顏色為綠色。 

 

注意:這里我們使用的.css(),前邊調(diào)用它的是this,而不是$(this)對(duì)象。這是因?yàn)槲覀兊膅renify方法和.css()方法被調(diào)用的對(duì)象一樣,

this代表了一個(gè)jquery對(duì)象。

啟用鏈?zhǔn)剑?/strong>

這一步要做2件事幫助我們的插件可以被實(shí)際使用。

***:鏈?zhǔn)讲僮魇莏query的一個(gè)特點(diǎn),你可以在一個(gè)被選出的元素后增加5或者6個(gè)操作。這是通過所以jquery對(duì)象方法再次返回來原來的jquery對(duì)象來完成的,使我們的方法啟用鏈?zhǔn)讲僮髦恍枰黾右恍校?/p>

 

  1. $.fn.greenify = function() {     this.css( "color""green" );      return this;// 啟用鏈?zhǔn)?nbsp; } 
  2.  
  3. $( "a" ).greenify().addClass( "greenified" ); 

 

 這里在使得a標(biāo)簽的文字變成綠色后我們還可以給a標(biāo)簽增加class.

$別名的保護(hù),增加作用域

第二:$符號(hào)在javascript庫或框架中非常流行,如果你在項(xiàng)目中同時(shí)用了其他類庫和jquery一起,你不能使得jquery使用$符號(hào),

用jquery.noConflict()方法釋放掉$符號(hào),然而我們的插件是假設(shè)使用$符號(hào)構(gòu)建的jquery方法。但是我們還是需要繼續(xù)使用

$符號(hào)和其他插件一起共工作。我們必須把我們的代碼放在匿名函數(shù)表達(dá)式中(防止$被污染)。然后我們把jquery作為參數(shù)傳遞進(jìn)去,

相應(yīng)的形參用$符號(hào)。

 

  1. (function ( $ ) {      $.fn.greenify = function() {          this.css( "color""green" );          return this;      };  }( jQuery )); 

 

此外,我們使用匿名函數(shù)表達(dá)式是為了把變量私有化,加入我們想使用不同的顏色,我們可以用變量緩存。

 

  1. (function ( $ ) {      var shade = "#556b2f";      $.fn.greenify = function() {          this.css( "color", shade );          return this;      };  }( jQuery )); 

 

只使用一個(gè)$.fn來構(gòu)建插件:

只使用一個(gè)$.fn 會(huì)降低你的插件方法被覆蓋的幾率,下面的例子是不推薦的做法:

 

  1. (function( $ ) {      //不好的例子          $.fn.openPopup = function() {          // Open popup code.      };     $.fn.closePopup = function() {          // Close popup code.      }; }( jQuery )); 

 

***的實(shí)踐是只使用一個(gè)$.fn,然后在內(nèi)部判斷不同的行為,來執(zhí)行不同的操作:

 

  1. (function( $ ) {      $.fn.popup = function( action ) {          if ( action === "open") {              // Open popup code.          }          if ( action === "close" ) {              // Close popup code.          }      };  }( jQuery )); 

 

使用each()方法遍歷(each() method)

典型的jquery方法包含任意數(shù)量的dom元素,這就是為什么jquery對(duì)象被稱為對(duì)象集合。如果你想對(duì)一定數(shù)量的元素執(zhí)行

任何操作你肯定要用到each遍歷dom樹。(操作包括獲取元素的屬性 get attribute,元素位置 positions).

 

  1. $.fn.myNewPlugin = function() {      return this.each(function() {          //遍歷元素然后do something      }); }; 

 

注意:我們返回的是.each()的結(jié)果 代替了 return this. 因?yàn)閑ach()已經(jīng)是可鏈?zhǔn)降?,each內(nèi)部已經(jīng)返回了我們需要return的this.

這是到目前為止讓我們應(yīng)用鏈?zhǔn)?**的方式。

參數(shù)的配置使用:

當(dāng)你的插件越來越復(fù)雜,***的方式是讓你的插件來接收參數(shù),這樣的插件是可定制的。最簡(jiǎn)單的方法是,把很多個(gè)參數(shù)用一個(gè)對(duì)象

字面量裝起來。現(xiàn)在我們來讓我們的greenify插件接收一些參數(shù):

 

  1. (function ( $ ) {     $.fn.greenify = function( options ) {           // 這里是配置的默認(rèn)參數(shù)          var settings = $.extend({              color: "#556b2f",              backgroundColor: “white"          }, options );          // Greenify 方法基于默認(rèn)的參數(shù)設(shè)定          return this.css({              color: settings.color,              backgroundColor: settings.backgroundColor          });      };  }( jQuery )); 

 

實(shí)際調(diào)用的時(shí)候傳入?yún)?shù):

  1. $( "div" ).greenify({      color: "orange"  }); 

默認(rèn)的的color顏色設(shè)定 “#556b2f”,將被 color “orange” 覆蓋掉。

把所有東西整合在一起:

下面這個(gè)插件用到了我們上面討論過的技術(shù):

 

  1. (function( $ ) {      $.fn.showLinkLocation = function() {          this.filter( "a" ).each(function() {              var link = $( this );              link.append( " (" + link.attr( "href" ) + ")" );          });         return this;      };  }( jQuery )); 

 

// 實(shí)際調(diào)用

  1. $( "a" ).showLinkLocation(); 

這個(gè)插件的工作方式是:把a(bǔ)標(biāo)簽的href屬性里的值,增加到a標(biāo)簽的里邊

<!—插件被調(diào)用前 -->

  1. <a href="page.html">Foo</a> 

<!— 插件被調(diào)用后 -->

  1. <a href="page.html">Foo (page.html)</a> 

優(yōu)化我們的插件:

 

  1. (function( $ ) {         $.fn.showLinkLocation = function() {             this.filter( "a" ).append(function() {              return " (" + this.href + ")";          });             return this;         };     }( jQuery )); 

 

我們只用.append()方法接受回調(diào),該回調(diào)函數(shù)返回的值將追加到遍歷的每一個(gè)a元素集合中。

注意:我們沒有使用.attr()方法來獲得元素的屬性,這是因?yàn)?原生的DOM API給了我們簡(jiǎn)單的獲取href屬性的方式

(原生的方法要比jquery的方法性能好)

本文來自api.jquery.com的插件制作官方文檔,如果文章有翻譯錯(cuò)誤,請(qǐng)指正。(轉(zhuǎn)載請(qǐng)注明出處,謝謝)

倉庫地址:https://github.com/ollieSk8/create_jq_plugins

參考原文地址:http://learn.jquery.com/plugins/basic-plugin-creation/

 
責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2011-09-06 15:12:39

MTK

2011-07-20 16:03:48

iPhone PXL 安裝包

2011-11-25 09:09:22

jQuery

2017-11-13 13:06:32

表情包草圖表情

2009-09-15 09:23:35

初級(jí)linuxLinuxlinu操作系統(tǒng)x后門

2010-06-29 09:55:41

嵌入式Linux文件系統(tǒng)

2010-08-17 10:48:12

Div CSS實(shí)例

2009-06-10 16:32:45

MyEclipseEclipse綠色版

2011-04-26 16:29:48

噴墨打印墨盒噴打堵頭

2013-12-02 14:53:20

jQuery插件

2015-07-02 16:10:11

UIStackViewiOS 9

2017-12-24 22:52:49

微信小程序圣誕

2020-12-01 15:54:08

鴻蒙構(gòu)建系統(tǒng)

2013-01-09 10:20:26

jQueryFlotjQuery插件

2012-05-10 13:45:45

jQuery

2014-11-04 09:44:37

WebjQuery

2013-12-02 15:36:17

jQuery插件

2013-12-02 15:31:37

jQuery插件

2012-04-25 09:43:43

jQuery插件

2009-06-24 10:58:21

jQuery插件教程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)