javascript - 自己開發(fā)jQuery插件能不能實(shí)現(xiàn)一個(gè)插件里有多個(gè)功能
問(wèn)題描述
RT!比如,寫一個(gè)插件,里面有選項(xiàng)卡功能,有輪播圖功能,有彈窗功能等等當(dāng)然不需要這些功能都很強(qiáng)大,只是為了把這些功能集合起來(lái),方便使用的時(shí)候調(diào)用就可以了我的思路是:用 var methods = {...} 包裹起來(lái),里面的 ... 代表N各小功能。如:
var methods = { nTab: function(options) {return this.each(function() { var defaults = { ... }; // 每增加一個(gè)功能就要多寫一遍這個(gè) settings = $.extend({}, defaults, options); // 執(zhí)行代碼} }, slide: function(options) {return this.each(function() { var defaults = { ... }; // 每增加一個(gè)功能就要多寫一遍這個(gè) settings = $.extend({}, defaults, options); // 執(zhí)行代碼} } // N個(gè)小功能代碼 ...}$.fn.pluginName = function() { var method = arguments[0]; if(methods[method]) {method = methods[method];arguments = Array.prototype.slice.call(arguments, 1); } else if( typeof(method) == ’object’ || !method ) {method = methods.init; } else {$.error( ’Method ’ + method + ’ does not exist on jQuery.pluginName’ );return this; } return method.apply(this, arguments);}
目前自己照這種方法寫了一個(gè)插件,里面包含了一些自己經(jīng)常會(huì)用到的js特效,但總覺(jué)得這樣寫不好,但不知道需要做哪些改進(jìn),還請(qǐng)走過(guò)路過(guò)的前輩指點(diǎn)一下啊,謝謝啦!
不知道有沒(méi)有人也有和我一樣的需求,大家都是怎么來(lái)實(shí)現(xiàn)的?
問(wèn)題解答
回答1:你這就是要自己寫個(gè)庫(kù)的節(jié)奏?。∧悻F(xiàn)在的想法類似 jQuery EasyUI,它的每個(gè)組件都對(duì)應(yīng)一個(gè) $.fn.<component>() 方法,這個(gè)方法第的一個(gè)參數(shù)是組件方法名,之后是這個(gè)方法的參數(shù),比如
$('#id1').panel('show')
這就是調(diào)用的 panel 組件的 show 方法。
這種寫法用慣也挺好,但是有個(gè)問(wèn)題,就是很難在編輯器中實(shí)現(xiàn)語(yǔ)法提示。
另外一種方式是 MiniUI 的方式,它是通過(guò)一個(gè)特定的方法(mini.get())來(lái)根據(jù) DOM 獲取一個(gè)組件控制對(duì)象,然后跟使用普通對(duì)象一樣來(lái)使用這個(gè)對(duì)象進(jìn)行相關(guān)的組件操作。比如
var panel = mini.get('id1');panel.show();
兩種方式應(yīng)該都能實(shí)現(xiàn)你的想法,區(qū)別就在于封裝一個(gè)函數(shù)(方法)接口和封裝一個(gè)對(duì)象接口的區(qū)別
回答2:感覺(jué)你想做的是一個(gè)庫(kù),包含了一些自己常用的功能??梢詤⒖枷逻@個(gè)項(xiàng)目的結(jié)構(gòu)
回答3:怎么感覺(jué)你那個(gè)不是插件,更像ui組合
相關(guān)文章:
1. PHP單例模式2. mysql 5萬(wàn)張表 導(dǎo)出成sql 不要內(nèi)容,只要結(jié)構(gòu),非常慢。如何解決???3. mysql - eclispe無(wú)法打開數(shù)據(jù)庫(kù)連接4. mysql - 關(guān)于數(shù)據(jù)緩存策略方面的疑惑5. 數(shù)據(jù)庫(kù) - mysql中有沒(méi)查看數(shù)據(jù)大小的函數(shù)??6. 老師 我是一個(gè)沒(méi)有學(xué)過(guò)php語(yǔ)言的準(zhǔn)畢業(yè)生 我希望您能幫我一下7. mysql如何配置遠(yuǎn)程php外網(wǎng)鏈接數(shù)據(jù)庫(kù)8. mysql如何判斷數(shù)據(jù)不存在則插入呢?9. 導(dǎo)入數(shù)據(jù)庫(kù)不成功10. mysql無(wú)法刪除字段(錯(cuò)誤1091),但是對(duì)該字段設(shè)置主鍵后就可刪除,為什么?
