亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jquery插件開發模式實例詳解

2019-11-19 11:09:35
字體:
來源:轉載
供稿:網友

本文實例講述了jquery插件開發模式。分享給大家供大家參考,具體如下:

jquery插件一般有三種開發方式:

  • 通過$.extend()來擴展jQuery
  • 通過$.fn 向jQuery添加新的方法
  • 通過$.widget()應用jQuery UI的部件工廠方式創建

第一種$.extend()相對簡單,一般很少能夠獨立開發復雜插件,第三種是一種高級的開發模式,本文也不做介紹。第二種則是一般插件開發用到的方式,本文著重講講第二種。

插件開發

第二種插件開發方式一般是如下定義

$.fn.pluginName = function() {  //your code here}

插件開發,我們一般運用面向對象的思維方式

例如定義一個對象

var Haorooms= function(el, opt) {  this.$element = el,  this.defaults = {    'color': 'red',    'fontSize': '12px',    'textDecoration':'none'  },  this.options = $.extend({}, this.defaults, opt)}//定義haorooms的方法haorooms.prototype = {  changecss: function() {    return this.$element.css({      'color': this.options.color,      'fontSize': this.options.fontSize,      'textDecoration': this.options.textDecoration    });  }}

$.extend({}, this.defaults, opt)有{}主要是為了創建一個新對象,保留對象的默認值。

$.fn.myPlugin = function(options) {  //創建haorooms的實體  var haorooms= new Haorooms(this, options);  //調用其方法  return Haorooms.changecss();}

調用這個插件直接如下就可以

$(function() {  $('a').myPlugin({    'color': '#2C9929',    'fontSize': '20px'  });})

上述開發方法的問題

上面的開發方法存在一個嚴重的問題,就是定義了一個全局的Haorooms,這樣對于插件的兼容等等各個方面都不好。萬一別的地方用到了Haorooms,那么你的代碼就悲催了!現在我們把上面的代碼包裝起來,用一個自調用匿名函數包裹,就不會出現這個問題了!包括js插件的開發,也是一樣的,我們用一個自調用匿名函數把自己寫的代碼包裹起來,就可以了!包裹方法如下:

(function(){})()

用上面的這個包裹起來,就可以了。

但是還有一個問題,當我們研究大牛的代碼的時候,前面經??吹接小?;”,那是為了避免代碼合并等不必要的錯誤。

例如,我們隨便定義一個函數:

var haoroomsblog=function(){}(function(){  })()

由于haoroomsblog這個函數后面沒有加分號,導致代碼出錯,為了避免這類情況的發生,通常這么寫!

;(function(){  })()

把你的插件代碼包裹在上面里面,就是一個簡單的插件了。(注js插件和jquery插件都是如此)

還有一個問題

把你的插件包裹在

;(function(){  })()

基本上可以說是完美了。但是為了讓你開發的插件應用更加廣泛,兼容性更加好,還要考慮到用插件的人的一些特殊的做法,例如,有些朋友為了避免jquery和zeptojs沖突,將jquery的前綴“$”,修改為“jQuery”,還有些朋友將默認的document等方法修改。為了讓你的插件在這些東西修了了的情況下照常運行,那么我們的做法是,把代碼包裹在如下里面:

;(function($,window,document,undefined){  //我們的代碼。。})(jQuery,window,document);

就可以避免上面的一些情況了!

一個通用的框架

在動手寫自己的jQuery插件之前,自然是先研究一下別人寫的插件了。其實寫jQuery也基本有一個通用的框架。行,那咱也把這框架照搬過來吧。

(function($){$.fn.yourName = function(options){//各種屬性、參數}var options = $.extend(defaults, options);this.each(function(){//插件實現代碼});};})(jQuery);

有了這個,咱就可以往里面套東西了。

名號、參數和屬性

好不容易開始闖蕩江湖了,一定要有一個響亮的名號才行,這樣走在江湖上,才能夠diao,夠威風。不信,你聽聽人家“中國牙防組”!所以,咱這里一定要起個響亮的名號,一定要簡單、明了、夠權威。所以,決定了,就叫做“tableUI”了!

參數和屬性也很簡單,無非就是三個class的名稱。就叫做:evenRowClass、oddRowClass和activeRowClass吧。

所以,上面的框架,咱就把上半身給填上了。

(function($){$.fn.tableUI = function(options){var defaults = {evenRowClass:"evenRow",oddRowClass:"oddRow",activeRowClass:"activeRow"}var options = $.extend(defaults, options);this.each(function(){//實現代碼});};})(jQuery);

這里重點說一下這一句:

var options = $.extend(defaults, options);

看上去很diao的一句,其實就是合并多個對象為一個。這里就是,如果你在調用的時候寫了新的參數,就用你新的參數,如果沒有寫,就用默認的參數。想進一步了解的朋友,可以參考jquery的官方文檔: http://api.jquery.com/jQuery.extend/

開始下半身吧

ok,上半身填補完了,咱就可以填補下半身吧。無非就是找到基數行和偶數行(感謝jQuery提供了類似tr:even這種寫法,使其及其簡單),然后添加上相應的class。然后再給所有的tr,綁定mouseover和mouseout事件即可。下半身代碼如下:

(function($){$.fn.tableUI = function(options){var defaults = {evenRowClass:"evenRow",oddRowClass:"oddRow",activeRowClass:"activeRow"}var options = $.extend(defaults, options);this.each(function(){var thisTable=$(this);//添加奇偶行顏色$(thisTable).find("tr:even").addClass(options.evenRowClass);$(thisTable).find("tr:odd").addClass(options.oddRowClass);//添加活動行顏色$(thisTable).find("tr").bind("mouseover",function(){$(this).addClass(options.activeRowClass);});$(thisTable).find("tr").bind("mouseout",function(){$(this).removeClass(options.activeRowClass);});});};})(jQuery);

最重要的一步!

也許有些朋友覺得這樣就算是完成了。但是切切相反,我們還有最重要的一步沒有完成,那就是一定要在插件上方,寫上插件的名稱、版本號、完成日期、作者,作者的聯系方式、出生日期、三圍……等等。因為只有這樣才能顯的這個插件夠專業。

/** tableUI 0.1* Date: 2010-03-30* 使用tableUI可以方便地將表格提示使用體驗。先提供的功能有奇偶行顏色交替,鼠標移上高亮顯示*/(function($){$.fn.tableUI = function(options){var defaults = {evenRowClass:"evenRow",oddRowClass:"oddRow",activeRowClass:"activeRow"}var options = $.extend(defaults, options);this.each(function(){var thisTable=$(this);//添加奇偶行顏色$(thisTable).find("tr:even").addClass(options.evenRowClass);$(thisTable).find("tr:odd").addClass(options.oddRowClass);//添加活動行顏色$(thisTable).find("tr").bind("mouseover",function(){$(this).addClass(options.activeRowClass);});$(thisTable).find("tr").bind("mouseout",function(){$(this).removeClass(options.activeRowClass);});});};})(jQuery);

至此,你開發的插件就算完美了!

更多關于jQuery相關內容感興趣的讀者可查看本站專題:《jQuery擴展技巧總結》、《jQuery常用插件及用法總結》、《jQuery切換特效與技巧總結》、《jQuery遍歷算法與技巧總結》、《jQuery常見經典特效匯總》、《jQuery動畫與特效用法總結》及《jquery選擇器用法總結

希望本文所述對大家jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美交受高潮1| 日韩精品在线免费| 欧美日韩美女在线| 久久视频国产精品免费视频在线| 欧美性极品xxxx做受| 亚洲欧美一区二区激情| 久久久噜噜噜久久中文字免| 色婷婷亚洲mv天堂mv在影片| 亚洲男人天堂2019| 韩国国内大量揄拍精品视频| 亚洲午夜精品久久久久久久久久久久| 欧美日本中文字幕| 亚洲男人7777| 国产精品国产三级国产专播精品人| 亚洲欧美精品中文字幕在线| 国产成人涩涩涩视频在线观看| 久久成人亚洲精品| 国产日韩欧美在线视频观看| 欧美日韩国产页| 国内外成人免费激情在线视频网站| 精品久久久久久久久久久久久久| 97精品一区二区三区| 亚洲综合日韩中文字幕v在线| 精品香蕉在线观看视频一| 久久91亚洲人成电影网站| 国产精品一久久香蕉国产线看观看| 日韩中文字幕视频在线观看| 91亚洲国产成人久久精品网站| 亚洲激情电影中文字幕| 国内免费久久久久久久久久久| 国产午夜精品美女视频明星a级| 欧美日韩在线视频一区二区| 丝袜美腿亚洲一区二区| 国产一区二区三区在线观看网站| 国产精品免费福利| 国产精品一区二区三| 久久香蕉精品香蕉| 久久色免费在线视频| 国产精品黄页免费高清在线观看| 欧美精品在线视频观看| 91在线观看免费高清| 欧美精品午夜视频| 欧美黑人巨大精品一区二区| 日韩国产高清视频在线| 中文字幕精品影院| 亚洲成人精品视频| 都市激情亚洲色图| 日韩成人av一区| 亚洲精品美女久久久| 91久久久国产精品| 最近2019中文字幕在线高清| 色悠悠久久88| 成人免费网站在线| 日韩成人网免费视频| 亚洲欧美制服中文字幕| 亚洲国产日韩欧美在线动漫| 亚洲欧美激情四射在线日| 91av在线精品| 91sao在线观看国产| 国产精品一区专区欧美日韩| 国产精品免费一区豆花| 亚洲精品网址在线观看| 懂色av一区二区三区| 美日韩丰满少妇在线观看| 亚州av一区二区| 国模叶桐国产精品一区| 日韩成人在线免费观看| 5566成人精品视频免费| 欧美www视频在线观看| 综合136福利视频在线| 超碰日本道色综合久久综合| 日韩女优在线播放| 在线观看中文字幕亚洲| 亚洲欧美国产一本综合首页| 久久久久免费视频| 欧美性猛xxx| 国产精品亚洲精品| 精品人伦一区二区三区蜜桃免费| 亚洲影院色在线观看免费| 亚洲黄色av网站| 欧美中文字幕第一页| 国产成人精彩在线视频九色| 国产丝袜一区视频在线观看| 亚洲大胆人体视频| 亚洲欧美国产视频| 欧美日韩国产黄| 久久精品久久久久久国产 免费| 亚洲女在线观看| 色偷偷亚洲男人天堂| 亚洲福利视频二区| 国产91在线播放九色快色| 国产午夜精品视频免费不卡69堂| 清纯唯美亚洲综合| 日韩av日韩在线观看| 精品爽片免费看久久| 亚洲片在线观看| 欧美激情一级二级| 亚洲欧美另类自拍| 国产精品福利网站| 久久精品99久久香蕉国产色戒| 国产婷婷97碰碰久久人人蜜臀| 97视频在线观看亚洲| 亚洲男人天堂网| 中文字幕日韩精品在线| 亚洲成人激情在线观看| 久久这里只有精品99| 欧美肥臀大乳一区二区免费视频| 国产精品69精品一区二区三区| 国产美女被下药99| 国产精品美女视频网站| 欧美激情中文字幕在线| 欧美精品18videos性欧| 欧美性videos高清精品| 久久精视频免费在线久久完整在线看| 亚洲美女av黄| 人人做人人澡人人爽欧美| 亚洲成人免费在线视频| 国产精品久久久久久搜索| 亚洲最大av网| 久久久久久久久久久国产| 欧美日韩在线观看视频| 九九视频这里只有精品| 色婷婷久久一区二区| 欧美大学生性色视频| 狠狠躁夜夜躁人人爽超碰91| 2019日本中文字幕| 久久精品久久久久久国产 免费| 亚洲美女又黄又爽在线观看| 精品高清一区二区三区| 日本午夜精品理论片a级appf发布| 国产视频一区在线| 久久韩剧网电视剧| 亚洲有声小说3d| 欧美黑人极品猛少妇色xxxxx| 成人免费在线视频网址| 欧美日韩国产一区二区| 欧美激情在线有限公司| 精品国产乱码久久久久久婷婷| 日韩激情av在线免费观看| 国产精品久久久久久一区二区| 国产偷亚洲偷欧美偷精品| 亚洲第一福利网| 九九精品视频在线| 最近中文字幕2019免费| 国产成人精品国内自产拍免费看| 国产精品黄色av| 日本高清久久天堂| 日韩少妇与小伙激情| 欧美精品videosex极品1| www.午夜精品| 91亚洲国产成人久久精品网站| 亚洲电影中文字幕| 久久九九全国免费精品观看| 久久91精品国产91久久久| 精品调教chinesegay| 日韩中文在线观看| 亚洲色图av在线| 国产精品91在线| 国产精品久久久| 国产精品盗摄久久久| 亚洲欧美一区二区激情| 91人人爽人人爽人人精88v| 国产欧美va欧美va香蕉在线| 久久伊人色综合|