天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

一步一步教你寫一個jQuery的插件教程(Plugin)

jQuery 的plugin開發需要注意的事情,
1.       明確jQuery的命名空間只有一個。
2.       明白options參數用來控制plugin的行為。
3.       為默認的plugin設定提供公共的訪問權限。
4.       為子函數提供公共的訪問權限。
5.       私有的函數絕對是私有訪問
6.       支持metadata plugin。
我將會在下面的例子中一個一個的說明上面這幾個條件,做完這些事情后我們就會創建一個高亮顯示text的簡單插件。

1. 明確jQuery的命名空間只有一個

在我們的例子里,我們將會命名這個插件名字為hilight,

也就是我們的plugin可以通過下面的方法來使用:

為什么jQuery的plugin只有一個命名空間?可能是設計的要求,或者是這樣的話可讀性更強,亦或是為了面向對象的設計模式。

2.明白options參數來控制plugin的行為。

  讓我們先為我們的hilight插件明確一下foreground和background的顏色。我們應該能夠允許這兩個option作為option對象傳遞給plugin的主函數。例如:

現在插件能夠設定如下的屬性:

3. 為默認的plugin設定提供公共的訪問權限。

   我們這里可以改進一下,就是讓上面的代碼能夠設置能夠擴展。這樣當使用這個插件的用戶能夠使用最少的代碼重載我們的option。這也就是我們開始使用function對象的好處。

現在用戶可以在他們的script中使用一行代碼來設置foreground屬性:

有了上面的代碼我們就可以把某個DOM控件的foregrounf顏色設定為blue了。

4. 為子函數提供公共的訪問權限

   這個條款和上面的相仿,能很有趣的讓你的Plugin有擴展功能。例如:在lilight的plugin中我們能夠定義一個function是format,可以定義hilight的text的形式。我們的plugin代碼將會顯示如下:

這里我們可以很容易支持另外的一個option對象來通過一個callback 函數來重載默認的formatting。那將會是另外一個不錯的支持自定義的方式。

5. 私有的函數絕對是私有訪問

   公開plugin的一些Option能夠被自定義當然是個非常強大的功能。但是你需要考慮哪部分應該被公開,哪部分不應該通過外部訪問,否則會破會你已經封裝好的結果。

  這里debug方法不能從外部訪問,因為他在plugin的展現中屬于私有的方法。

6.支持metadata plugin。

  使用Metadata Plugin需要看你的plugin是什么類型,可能它會使你的插件功能更加強大。個人來說,我比較喜歡metadata plugin是因為它能偶讓我的plguin的option通過標記重載。

  如果metadata plugin能夠成功的封裝到我們的插件,那么可以通過下面的標記來使用這個lilight插件。

 最終代碼如下:
復制代碼 代碼如下:
//
// create closure
//
(function($) {
//
// plugin definition
//
$.fn.hilight = function(options) {
debug(this);
// build main options before element iteration
var opts = $.extend({}, $.fn.hilight.defaults, options);
// iterate and reformat each matched element
return this.each(function() {
$this = $(this);
// build element specific options
var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
// update element styles
$this.css({
backgroundColor: o.background,
color: o.foreground
});
var markup = $this.html();
// call our format function
markup = $.fn.hilight.format(markup);
$this.html(markup);
});
};
//
// private function for debugging
//
function debug($obj) {
if (window.console && window.console.log)
window.console.log('hilight selection count: ' + $obj.size());
};
//
// define and expose our format function
//
$.fn.hilight.format = function(txt) {
return '<strong>' + txt + '</strong>';
};
//
// plugin defaults
//
$.fn.hilight.defaults = {
foreground: 'red',
background: 'yellow'
};
//
// end of closure
//
})(jQuery);

JavaScript技術一步一步教你寫一個jQuery的插件教程(Plugin),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: jizzzz亚洲丰满xxxx | 九九99亚洲精品久久久久 | 男人插曲女人下生免费大全 | 无人区国产片 | 巨胸美女狂喷奶水www网麻豆 | 姑娘视频日本在线播放 | 亚洲AV无码乱码A片无码蜜桃 | 最新国产麻豆精品 | 国产成人久久婷婷精品流白浆 | 一个人看的www视频动漫版 | 午夜噜噜噜私人影院在线播放 | S货SAO死你BL大点声叫BL | 亚洲婷婷天堂综合国产剧情 | 99在线免费视频 | 肉动漫无修在线播放 | 乌克兰14一18处交见血 | 麻豆免费观看高清完整视频 | 欧美5g影院天天爽天天看 | 国产乱子影视频上线免费观看 | 日韩免费精品视频 | 九色终合九色综合88 | 2020最新无码国产在线视频 | 一起碰一起噜一起草视频 | chinesevideoshd性舞 | 欧美最猛性XXX孕妇 欧美最猛性xxxxx亚洲精品 | 国产免费看片 | 久9视频这里只有精品123 | 成人免费看片又大又黄 | 日韩1区1区产品乱码芒果榴莲 | 99er4久久视频精品首页 | 欧美Av无码高清在线 | 777琪琪午夜理论电影网 | 在线 | 果冻国产传媒61国产免费 | 国产午夜精AV在线麻豆 | 伊人久久综合谁合综合久久 | 国产99久久九九免费精品无码 | 人人射人人插 | 日韩一区二区三区免费体验 | 好满射太多了装不下了视频 | 午夜免费无码福利视频麻豆 | 就去色一色 |