當前位置:成語大全網 - 書法字典 - 如何創建定制的jquery插件

如何創建定制的jquery插件

jQuery庫旨在加速JavaScript的開發。通過簡化編寫JavaScript的方式來減少代碼量。使用

JQuery庫,妳可能會發現妳經常為壹些常用的函數重寫相同的代碼。如果是這樣,這可能是您需要編寫自定義jQuery插件的壹個原因。

jQuery插件允許您使用自定義代碼擴展jQuery庫;妳可以使用插件來完成壹些重復性的功能。例如,許多插件可用於幻燈片、下拉菜單和折疊菜單。如果您搜索jQuery插件,您會發現大量可以在您自己的項目中使用的示例(查看它們是如何構建的)。

準備工作/即將開始工作

對JavaScript,jQuery,CSS有基本的了解。(使用的源代碼和示例在本文底部)

開始

JQuery是壹個可擴展的JavaScript語言庫。當您創建壹個jQuery插件時,您實際上是在擴展這個jQuery。

Ku。要真正理解插件如何擴展jQuery庫,您需要對JavaScript原型屬性有壹個基本的了解。雖然沒有直接使用,但是

JavaScript prototype屬性可以通過jQuery屬性fn在後臺使用,它是壹個原生的JavaScript原型。

屬性的jQuery別名。

要使用fn屬性創建壹個新的jQuery插件,只需為fn屬性分配壹個插件名,並將其指向壹個充當構造函數的新函數,類似於pure。

JavaScript .代碼1展示了如何使用jQuery對象和來定義壹個名為accordion的新jQuery插件。

屬性,並將其賦給壹個新的構造函數。

代碼1:定義壹個名為accordion的新jQuery插件。

jquery . fn . accordion = function(){

//在此添加插件代碼

};

代碼1展示了壹種創建jQuery插件的方法;本例中沒有功能錯誤。但是,創建壹個jQuery。

插件的推薦方法是首先創建壹個允許使用美元符號($)的包裝函數。默認情況下,美元符號可能與其他JavaScript不同。

框架沖突。如果插件被包裝在壹個函數中,就不會有沖突。代碼2中的示例代碼展示了如何將包裝器函數應用於jQuery。

在插件定義中。

(函數($) {

$.fn.accordion = function() {

//在此添加插件代碼

};

})(jQuery);

在代碼2中,jQuery關鍵字應用於包裝器函數,這允許您在插件中使用美元符號,就像使用fn壹樣。

財產之類的。壹旦包裝器函數準備好了,就可以在插件的任何地方使用美元符號來代替jQuery。

關鍵詞,不會幹擾其他第三方插件。這個選項為我們在開發整個插件時編寫更少的代碼提供了壹種方法,並幫助您的插件代碼保持整潔和易於維護。

保持可鏈接性

jQuery的壹個優點是它允許您使用任何類型的選擇器。但是,必須記住,您的插件可以處理幾種不同的元素類型。用這個

關鍵字允許您的插件應用於相關的函數,並且對每個元素的訪問都可以通過循環來實現,而不管元素類型如何。如果在每個循環之前使用return

關鍵字,您可以使用您的插件來維護可鏈接性。清單3展示了分配給函數處理程序的每個循環以及return關鍵字。

代碼3。在每個循環之前使用return關鍵字。

(函數($) {

$.fn.accordion = function() {

return this.each(function() {

//使用回車

});

};

})(jQuery);

使用代碼3的代碼,可以在方法調用鏈中使用示例accordion插件。具有可鏈接性(另壹個強大的jQuery

特性),您的插件可以在方法調用鏈中使用。例如,下面的代碼顯示了如何在單個方法調用鏈中淡出HTML元素並將其從文檔對象模型(DOM)中移除。

從中刪除。

$("#my-div ")。淡出()。移除();

制作壹架手風琴

典型的級聯設計包括標題欄和相關的內容區域。定義列表是手風琴的壹個很好的HTML結構;dt元素用於標題,而dd元素用於內容區域。清單4中的HTML結構是壹個定義列表,有四個標題和相應的內容區域。

代碼4。單壹方法調用鏈

& ltdl class = " accordion " id = " my-accordion " >

& ltdt & gt零件1 < /dt >

& ltdd & gt內容1

& ltdt & gt第二部分

& ltdd & gt內容2

& ltdt & gt第三部分

& ltdd & gt內容3

& ltdt & gt第四部分

& ltdd & gt內容4

& lt/dl & gt;

代碼4中定義的列表還有壹個名為accordion的CSS類。在沒有任何CSS的情況下,這個手風琴式的結構看起來類似於圖1中的基本設計。

為了美觀,我們把代碼4中的Html美化壹下,命名為“jquery.accordion.css”。

代碼5。CSS部分

。手風琴

寬度:500px

邊框:1px實心# ccc

邊框-底部:無;

字體系列:Arial,Helvetica,無襯線;

font-size:12px;

}

。手風琴dt,

。手風琴dd {

border-bottom:1px solid # CCC;

邊距:0px

}

。手風琴式dt {

背景:# eaeaea

光標:指針;

填充:8px 4px

font-size:13px;

字體粗細:粗體;

}

。手風琴dd {

填充:12px 8px;

}

效果如下:

自定義插件

要創建壹個功能性的accordion,您必須將定制代碼應用於您在上壹節中創建的jQuery插件的功能。手風琴

插件從遍歷所有已定義的accordion開始。要定義壹個協定,可以在HTML文檔中或外部嵌入JavaScript。

文件中使用了以下jQuery。

$('dl#my-accordion ')。手風琴();

對於每個Accordion,您可以使用jQuery的children方法來訪問相關定義的標題,並返回壹個數組或dt元素。應用

單擊dt元素的事件,然後將名為reset的方法應用於每個dt。當第壹次加載accordion時,此重置方法折疊所有

Dd元素。當您單擊dt元素或標題欄時,click事件會觸發壹個名為onClick的自定義方法。自定義onClick方法用於查找

手風琴中的所有dt元素。它調用壹個自定義的hide方法,該方法使用next方法查找dt元素旁邊的dd。

元素,隱藏每個相關的dd元素,通過使用next方法找到dt元素旁邊的dd元素,然後向上滑動激活它。

在隱藏了所有的dd元素之後,您可以通過使用slideDown方法看到與所單擊的dt元素相關的dd元素,並創建壹個放大和縮小動畫,如清單8所示。

如圖。onClick方法的最後壹行是return false,它確保任何被點擊的主題欄都不會顯示它的壹般行為。例如,如果您使用

使用錨元素作為標題欄,您可能希望返回false,這樣用戶就不會被定向到另壹個頁面或現有頁面的壹部分。

代碼6。定制用於創建jQuery插件的accordion函數。

(函數($) {

$.fn.accordion =功能(選項){

return this.each(function() {

var dts = $(this)。孩子(' dt ');

dts . click(onClick);

dts.each(重置);

});

函數onClick() {

$(這個)。兄弟姐妹(' dt ')。每個(隱藏);

$(這個)。下壹個()。向下滑動(“快速”);

返回false

}

函數hide() {

$(這個)。下壹個()。slideUp(“快速”);

}

功能重置(){

$(這個)。下壹個()。hide();

}

}

})(jQuery);

如果accordion插件與壹個HTML定義列表結構相關聯,比如您之前創建的accordion函數,它將被應用。有

Accordion函數,當妳點擊壹個標題欄或dt元素時,它的內容區域會被打開,而其他內容區域會被關閉。換句話說,壹次只能打開壹個內容區域。

設置插件的默認值和選項。

JQuery插件可以包含默認值和選項。選項本質上是傳遞給插件的參數。您可以使用選項。

將參數作為對象文字發送是標準的jQuery實踐,不需要傳遞多個參數。如果您的插件支持選項,請使用

這是為defaults對象設置默認選項的最佳方式。與選項壹樣,默認值也是壹個對象。

文字,它應該包括您想要傳遞到插件中的屬性。

例如,如果您支持壹個可用於在accordion首次加載時打開其第壹個內容區域的屬性,那麽您應該在插件中包含壹個open。

屬性的默認值。使用默認值來確定插件中的默認函數,並使用選項來覆蓋默認值。如果插件收到選項,您可以使用。

的美元。extend方法執行覆蓋。的美元。jQuery的extend方法合並兩個或多個對象。代碼7中的示例顯示在壹個自定義jQuery中。

使用$合並用戶定義的選項和默認選項的壹般實現。插件中的擴展方法。

代碼7。向自定義accordion jQuery插件添加選項和默認值。

(函數($) {

$.fn.accordion =功能(選項){

var設置= $。extend({},{open: false},options);

return this.each(function() {

var dts = $(this)。孩子(' dt ');

dts . click(onClick);

dts.each(重置);

if(settings.open) $(this)。孩子(' dt:第壹個孩子')。下壹個()。show();

});

函數onClick() {

$(這個)。兄弟姐妹(' dt ')。每個(隱藏);

$(這個)。下壹個()。向下滑動(“快速”);

返回false

}

函數hide() {

$(這個)。下壹個()。slideUp(“快速”);

}

功能重置(){

$(這個)。下壹個()。hide();

}

}

})(jQuery);

的美元。擴展方法參數是壹個目標對象和兩個或多個合並對象。在本例中,目標對象是壹個空對象。

Literal,它充當合並對象的容器。目標將成為包含合並對象值的單個對象(在本例中為設置變量)。第二

該參數是壹個包含默認插件屬性的對象文字。第三個參數是用戶定義的選項參數。在HTML元素上使用

當accordion插件傳遞選項時,您需要知道作為對象文字傳遞的其他屬性,如下所示。

$('dl#my-accordion ')。手風琴({ open:true });

在代碼7的例子中,傳遞給插件的選項通過$覆蓋了默認值。擴展方法。如果沒有傳遞options,則使用默認值。對於示例插件,您可以使用open屬性來確定在加載時是否打開第壹個內容區域。

復用性

您可以在任何HTML文檔中重用示例accordion插件,並且可以在單個HTML文檔中多次使用它。您也可以包含多個。

accordion結構就像已經創建的accordion壹樣,使用剛剛創建的新accordion插件將每個人定義為。

手風琴.要在壹個HTML文檔中添加多個手風琴,只需添加盡可能多的手風琴結構。代碼8

中的代碼包括由壹個段落分隔的兩個折疊結構。

代碼8。在同壹個HTML文檔中使用多個折疊項。

& ltdl class = " accordion " id = " my-accordion " >

& ltdt & gt零件1 < /dt >

& ltdd & gt內容1

& ltdt & gt第二部分

& ltdd & gt內容2

& ltdt & gt第三部分

& ltdd & gt內容3

& ltdt & gt第四部分

& ltdd & gt內容4

& lt/dl & gt;

& ltdl class = " accordion " id = " my-accordion " >

& ltdt & gt第五部分

& ltdd & gt內容5d & gt;

& ltdt & gt第六部分

& ltdd & gt內容6dd & gt;

& ltdt & gt第七部分

& ltdd & gt內容7/DD & gt;

& lt/dl & gt;

代碼8中的兩個accordion結構幾乎相同,只是內容不同,更重要的是ID值不同。第壹個結構包含壹個

我的手風琴ID值。第二個結構包含壹個my-accordion2 ID值。這些結構現在可以單獨定向。例如,以下內容

jQuery腳本使用新創建的插件將每個accordion結構定義為accordion。

$('dl#my-accordion ')。手風琴({ open:true });

$('dl#my-accordion2 ')。手風琴({ open:true });

定義兩個折疊結構後,第壹個面板被設置為默認打開。下圖顯示了在同壹個HTML文檔中使用的多個accordion插件的示例。