|
|
|
jQuery起點(diǎn)教程之插件制作
jquery插件給我的感覺清一色的清潔,簡(jiǎn)單。如Jtip,要使用它的功能,只需要在你的元素的class上加上Jtip,并引入jtip.js及其樣式即可以了。其他事情插件全包。我喜歡jquery的一個(gè)重要原因是發(fā)現(xiàn)她已經(jīng)有了很多很好,很精彩的插件。寫一個(gè)自己的jQuery插件是非常容易的,如果你按照下面的原則來(lái)做,可以讓其他人也容易地結(jié)合使用你的插件.
為你的插件取一個(gè)名字,在這個(gè)例子里面我們叫它"foobar".
創(chuàng)建一個(gè)像這樣的文件:jquery.[yourpluginname].js,比如我們創(chuàng)建一個(gè)jquery.foobar.js
創(chuàng)建一個(gè)或更多的插件方法,使用繼承jQuery對(duì)象的方式,如:
jQuery.fn.foobar = function() { // do something }; 可選的:創(chuàng)建一個(gè)用于幫助說明的函數(shù),如:
jQuery.fooBar = { height: 5, calculateBar = function() { ... }, checkDependencies = function() { ... } }; 你現(xiàn)在可以在你的插件中使用這些幫助函數(shù)了:
jQuery.fn.foobar = function() { // do something jQuery.foobar.checkDependencies(value); // do something else }; 可選的l:創(chuàng)建一個(gè)默認(rèn)的初始參數(shù)配置,這些配置也可以由用戶自行設(shè)定,如:
jQuery.fn.foobar = function(options) { var settings = { value: 5, name: "pete", bar: 655 }; if(options) { jQuery.extend(settings, options); } }; 現(xiàn)在可以無(wú)需做任何配置地使用插件了,默認(rèn)的參數(shù)在此時(shí)生效:
$("...").foobar(); 或者加入這些參數(shù)定義:
$("...").foobar({ value: 123, bar: 9 }); 如果你release你的插件, 你還應(yīng)該提供一些例子和文檔,大部分的插件都具備這些良好的參考文檔.現(xiàn)在你應(yīng)該有了寫一個(gè)插件的基礎(chǔ),讓我們?cè)囍眠@些知識(shí)寫一個(gè)自己的插件.很多人試著控制所有的radio或者checkbox是否被選中,比如:
$("input[@type='checkbox']").each(function() { this.checked = true; // or, to uncheck this.checked = false; // or, to toggle this.checked = !this.checked; }); 無(wú)論何時(shí)候,當(dāng)你的代碼出現(xiàn)each時(shí),你應(yīng)該重寫上面的代碼來(lái)構(gòu)造一個(gè)插件,很直接地:
$.fn.check = function() { return this.each(function() { this.checked = true; }); }; 這個(gè)插件現(xiàn)在可以這樣用:
$("input[@type='checkbox']").check(); 現(xiàn)在你應(yīng)該還可以寫出uncheck()和toggleCheck()了.但是先停一下,讓我們的插件接收一些參數(shù).
$.fn.check = function(mode) { var mode = mode || 'on'; // if mode is undefined, use 'on' as default return this.each(function() { switch(mode) { case 'on': this.checked = true; break; case 'off': this.checked = false; break; case 'toggle': this.checked = !this.checked; break; } }); }; 這里我們?cè)O(shè)置了默認(rèn)的參數(shù),所以將"on"參數(shù)省略也是可以的,當(dāng)然也可以加上"on","off", 或 "toggle",如:
$("input[@type='checkbox']").check(); $("input[@type='checkbox']").check('on'); $("input[@type='checkbox']").check('off'); $("input[@type='checkbox']").check('toggle'); 如果有多于一個(gè)的參數(shù)設(shè)置會(huì)稍稍有點(diǎn)復(fù)雜,在使用時(shí)如果只想設(shè)置第二個(gè)參數(shù),則要在第一個(gè)參數(shù)位置寫入null.從上一章的tablesorter插件用法我們可以看到,既可以省略所有參數(shù)來(lái)使用或者通過一個(gè) key/value 對(duì)來(lái)重新設(shè)置每個(gè)參數(shù).作為一個(gè)練習(xí),你可以試著將 第四章 的功能重寫為一個(gè)插件.這個(gè)插件的骨架應(yīng)該是像這樣的:
$.fn.rateMe = function(options) { var container = this; // instead of selecting a static container with $("#rating"), we now use the jQuery context
var settings = { url: "rate.php" // put more defaults here // remember to put a comma (",") after each pair, but not after the last one! };
if(options) { // check if options are present before extending the settings $.extend(settings, options); }
// ... // rest of the code // ...
return this; // if possible, return "this" to not break the chain });
上一條資訊|返回欄目頁(yè)|下一條資訊
|