中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

總結jQuery插件開發中的一些要點
來源:易賢網 閱讀:1118 次 日期:2016-06-27 16:21:57
溫馨提示:易賢網小編為您整理了“總結jQuery插件開發中的一些要點”,方便廣大網友查閱!

這篇文章主要介紹了總結jQuery插件開發中的一些要點,包括命名空間與事件events等重點和難點部分的講解,要的朋友可以參考下

基礎

1、jQuery插件開發主要使用如下兩個方法:

1.1、添加靜態方法

jQuery.extend(object);

為擴展jQuery本身,為類添加新的方法,可以理解文添加靜態方法。

$.extend({ 

  addMethod : function(a, b){return a + b;}  // $.addMethod(1, 2); //return 3

});

1.2、添加成員方法

jQuery.fn.extend(object);

jQuery.fn = jQuery.prototype

給jQuery對象添加方法,對jQuery.prototype進行擴展,為jQuery類添加成員方法:

$.fn.extend({ 

  getInputText:function(){ 

    $(this).click(function(){ 

      alert($(this).val()); 

    }); 

  } 

});

$("#username").getInputText();

2、一個通用的框架:

以下是一個通用的框架:

(function($){ 

  $.fn.yourPluginName = function(options){ 

    //各種屬性和參數 

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

    this.each(function(){ 

      //插件的實現代碼

    }); 

  }; 

})(jQuery);

關于

$.extend(defaults, options);

就是通過合并defaults和options來擴展defaults,實現插件默認參數的功能。

實踐

1、聲明插件名稱:

添加一個函數到jQuery.fn(jQuery.prototype)對象,該函數的名稱就是你的插件名稱:

jQuery.fn.myPlugin = function() {

 // Do your awesome plugin stuff here

};

在命名不與jQuery其他函數沖突的情況,可以使用閉包的方式使用$符號:

(function( $ ) {

 $.fn.myPlugin = function() {

  // Do your awesome plugin stuff here

 };

})( jQuery );

2、插件中的上下文:

jQuery接收一個回調,該回調本身就指向了dom,直接使用this就相當于我們平時的$(this)的情況:

(function( $ ){

 $.fn.myPlugin = function() {

  // there's no need to do $(this) because

  // "this" is already a jquery object

  // $(this) would be the same as $($('#element'));

  this.fadeIn('normal', function(){

   // the this keyword is a DOM element

  });

 };

})( jQuery );

$('#element').myPlugin();

下面是一個簡單的jQuery插件,實現獲取所有div的最大高度:

(function( $ ){

 $.fn.maxHeight = function() {

  var max = 0;

  this.each(function() {

   max = Math.max( max, $(this).height() );

  });

  return max;

 };

})( jQuery );

var tallest = $('div').maxHeight(); // Returns the height of the tallest div

3、維護鏈接性:

前面的示例返回一個整數值最高的div,但是通常的意圖僅在某種程度上是僅修改插件的元素集合,并將它們傳遞到下一個鏈中的方法。這樣的jQuery的設計優雅的地方。所以保持鏈接性放到一個插件,您必須確保您的插件返回這個關鍵字。

(function( $ ){

 $.fn.lockDimensions = function( type ) { 

  return this.each(function() {

   var $this = $(this);

   if ( !type || type == 'width' ) {

    $this.width( $this.width() );

   }

   if ( !type || type == 'height' ) {

    $this.height( $this.height() );

   }

  });

 };

})( jQuery );

$('div').lockDimensions('width').css('color', 'red');

因為插件返回this關鍵字的范圍,它維護鏈接性,jQuery可以繼續利用jQuery方法,如. css。所以,如果你的插件不返回一個內在價值,你應該總是返回this。

4、參數的傳遞,Defaults和Options:

(function( $ ){

 $.fn.tooltip = function( options ) { 

  // Create some defaults, extending them with any options that were provided

  var settings = $.extend( {

   'location'     : 'top',

   'background-color' : 'blue'

  }, options);

  return this.each(function() {    

   // Tooltip plugin code here

  });

 };

})( jQuery );

$('div').tooltip({

 'location' : 'left'

});

通過$.extend合并默認參數和調用者傳入的參數。

5、命名空間:

正確的命名空間在插件開發中是一個非常重要的部分。正確的命名空間,可以確保你的插件將有一個很低的幾率在同一個頁面上被他插件或代碼覆蓋。

在任何情況下都不應該在一個插件的jQuery.fn對象中聲稱多個名稱空間。

(function( $ ){

 $.fn.tooltip = function( options ) { 

  // THIS

 };

 $.fn.tooltipShow = function( ) {

  // IS

 };

 $.fn.tooltipHide = function( ) { 

  // BAD

 };

 $.fn.tooltipUpdate = function( content ) { 

  // !!! 

 };

})( jQuery );

你應該收集所有的方法到一個對象化字面,并且通過方法的字面值進行調用:

(function( $ ){

 var methods = {

  init : function( options ) { 

   // THIS 

  },

  show : function( ) {

   // IS

  },

  hide : function( ) { 

   // GOOD

  },

  update : function( content ) { 

   // !!! 

  }

 };

 $.fn.tooltip = function( method ) {

  // Method calling logic

  if ( methods[method] ) {

   return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));

  } else if ( typeof method === 'object' || ! method ) {

   return methods.init.apply( this, arguments );

  } else {

   $.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );

  }  

 };

})( jQuery );

// calls the init method

$('div').tooltip(); 

// calls the init method

$('div').tooltip({

 foo : 'bar'

});

// calls the hide method

$('div').tooltip('hide'); 

// calls the update method

$('div').tooltip('update', 'This is the new tooltip content!');

這種類型的方法封裝和體系結構在jQuery插件社區中是一個標準,它適用于無數的插件,包括jQueryUI插件和小部件。

6、Events:

Bind方法允許通過命名空間的方式綁定事件,如果你的插件綁定了事件,可以通過命名空間的方式,在解除綁定事件時,你也可以這樣做,來防止影響到其他的事件。可以通過“.<namespace>” 的方式來設置綁定事件的命名空間。

(function( $ ){

 var methods = {

   init : function( options ) {

    return this.each(function(){

     $(window).bind('resize.tooltip', methods.reposition);

    });

   },

   destroy : function( ) {

    return this.each(function(){

     $(window).unbind('.tooltip');

    })

   },

   reposition : function( ) { 

    // ... 

   },

   show : function( ) { 

    // ... 

   },

   hide : function( ) {

    // ... 

   },

   update : function( content ) { 

    // ...

   }

 };

 $.fn.tooltip = function( method ) {

  if ( methods[method] ) {

   return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));

  } else if ( typeof method === 'object' || ! method ) {

   return methods.init.apply( this, arguments );

  } else {

   $.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );

  }  

 };

})( jQuery );

$('#fun').tooltip();

// Some time later...

$('#fun').tooltip('destroy');

7、Data:

關于data方法可以參考官方的文檔:http://docs.jquery.com/Data,既是在頁面的元素中綁定存儲數據。

這里通過編寫插件,實現在頁面中的每個元素都綁定一些當前的狀態或者內容。

(function( $ ){

 var methods = {

   init : function( options ) {

    return this.each(function(){

     var $this = $(this),

       data = $this.data('tooltip'),

       tooltip = $('<div />', {

        text : $this.attr('title')

       });

     // If the plugin hasn't been initialized yet

     if ( ! data ) {

      /*

 Do more setup stuff here

 */

      $(this).data('tooltip', {

        target : $this,

        tooltip : tooltip

      });

     }

    });

   },

   destroy : function( ) {

    return this.each(function(){

     var $this = $(this),

       data = $this.data('tooltip');

     // Namespacing FTW

     $(window).unbind('.tooltip');

     data.tooltip.remove();

     $this.removeData('tooltip');

    })

   },

   reposition : function( ) { // ... },

   show : function( ) { // ... },

   hide : function( ) { // ... },

   update : function( content ) { // ...}

 };

 $.fn.tooltip = function( method ) {

  if ( methods[method] ) {

   return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));

  } else if ( typeof method === 'object' || ! method ) {

   return methods.init.apply( this, arguments );

  } else {

   $.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );

  }  

 };

})( jQuery );

更多信息請查看網絡編程
易賢網手機網站地址:總結jQuery插件開發中的一些要點
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
在线日韩一区二区| 亚洲视频二区| 欧美少妇一区二区| 欧美乱妇高清无乱码| 国产精品chinese| 红桃视频一区| 亚洲欧美文学| 久久黄色小说| 欧美日韩在线免费观看| 狠狠色狠色综合曰曰| 亚洲精品人人| 久久久噜噜噜久久中文字免| 欧美电影电视剧在线观看| 国产精品美女久久久久aⅴ国产馆| 国产日韩一区二区| 亚洲一级黄色片| 欧美三级视频在线| 亚洲精品视频在线观看免费| 亚洲尤物视频网| 国产精品久久9| 亚洲图片自拍偷拍| 欧美午夜宅男影院在线观看| 亚洲精品1区2区| 欧美高清成人| 亚洲大胆美女视频| 久久青青草原一区二区| 夜久久久久久| 国产精品亚洲美女av网站| 99国产精品久久久久老师| 欧美精品v日韩精品v国产精品| 永久免费毛片在线播放不卡| 猛干欧美女孩| 中日韩在线视频| 国产农村妇女毛片精品久久麻豆| 亚洲欧美怡红院| 国产一区二区在线观看免费播放| 久久精品中文字幕一区二区三区| 国产亚洲亚洲| 蜜臀av在线播放一区二区三区| 永久91嫩草亚洲精品人人| 男人天堂欧美日韩| 日韩亚洲精品在线| 国产精品网红福利| 蜜臀99久久精品久久久久久软件| 亚洲电影免费观看高清完整版在线观看| 久久久国产成人精品| 日韩亚洲欧美一区| 国内精品一区二区| 久久综合中文| 国产欧美日韩另类视频免费观看| 欧美在线在线| 亚洲特级毛片| 亚洲盗摄视频| 国产亚洲欧洲997久久综合| 欧美激情免费在线| 久久亚洲高清| 久久久久久久波多野高潮日日| 99国产精品久久久| 99视频在线观看一区三区| 在线观看日韩av电影| 国产一区二区视频在线观看| 国产精品一区二区三区成人| 欧美日韩免费观看一区| 欧美经典一区二区三区| 欧美激情二区三区| 免费亚洲电影在线| 欧美激情一区二区三区高清视频 | 99国产精品国产精品毛片| 国产一区二区三区四区五区美女| 国产农村妇女精品| 国产伦精品一区二区三区免费迷| 国产精品免费小视频| 欧美性生交xxxxx久久久| 国产精品国产三级国产aⅴ无密码| 欧美日韩一区二区三| 国产精品国内视频| 欧美精品手机在线| 国产精品高精视频免费| 国产精品卡一卡二卡三| 国产亚洲a∨片在线观看| 在线播放亚洲一区| 亚洲国产精选| 亚洲免费在线| 久久精品亚洲精品| 国产精品裸体一区二区三区| 国产精品日日摸夜夜添夜夜av| 国产真实久久| 亚洲女性喷水在线观看一区| 久久久久久久综合色一本| 久久综合九色综合欧美就去吻| 欧美日韩视频一区二区| 国产欧美日韩三级| 日韩手机在线导航| 免费亚洲一区二区| 国产日韩欧美在线看| 亚洲黄色免费| 香蕉久久夜色精品国产使用方法 | 国产精品一级| 日韩一级精品视频在线观看| 久久本道综合色狠狠五月| 欧美视频在线播放| 亚洲毛片在线观看.| 美女成人午夜| 国产欧美日韩视频一区二区三区| 最新成人av网站| 免费中文日韩| 亚洲国产视频直播| 欧美福利在线观看| 亚洲欧洲日韩综合二区| 久久久久久久一区二区三区| 国产视频精品网| 亚洲专区免费| 国产视频欧美| 久久久精品五月天| 亚洲国产欧美日韩另类综合| 狂野欧美一区| 亚洲国产精品久久久久婷婷老年| 欧美亚洲视频在线观看| 国产久一道中文一区| 亚洲小少妇裸体bbw| 午夜精品久久久| 国产一级揄自揄精品视频| 久久亚洲不卡| 亚洲特色特黄| 国外视频精品毛片| 免费av成人在线| 日韩一区二区精品视频| 国产欧美一区二区三区在线老狼 | 亚洲午夜小视频| 欧美三级视频| 久久国产精品99国产| 亚洲第一天堂av| 国产精品国产一区二区| 欧美一区中文字幕| 亚洲大片av| 国产精品乱人伦中文| 久久亚洲精品一区| 亚洲素人在线| 99视频有精品| 亚洲国产精品va在线看黑人| 国产精品视频网址| 欧美日韩国产三区| 六月婷婷一区| 久久精品国产96久久久香蕉| 一本色道久久综合亚洲精品小说| 在线观看91精品国产麻豆| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 国产一区二区三区久久久久久久久| 欧美承认网站| 日韩天天综合| 亚洲人成网站999久久久综合| 国产亚洲毛片在线| 国产欧美一区二区精品婷婷| 国产精品高精视频免费| 另类尿喷潮videofree| 久久伊人一区二区| 欧美99在线视频观看| 免费在线国产精品| 欧美日韩久久精品| 国产欧美精品在线播放| 一区二区三区在线观看视频| 好男人免费精品视频| 亚洲国产欧美在线| 亚洲午夜久久久| 另类激情亚洲| 欧美日韩亚洲一区二区三区在线 | 国产一区二区中文| 亚洲美女电影在线| 久久久久久久999| 国产精品国色综合久久| 国产欧美日韩伦理| 99视频精品| 牛牛影视久久网| 国产一区二区高清视频| 亚洲精品中文字幕有码专区| 久久成人精品一区二区三区| 欧美日韩亚洲一区三区| 亚洲成人自拍视频| 久久精品成人欧美大片古装| 欧美性事免费在线观看| 亚洲国产日韩欧美综合久久| 亚洲女人天堂av| 欧美性猛交99久久久久99按摩| 亚洲欧洲精品一区二区三区| 久久久久久有精品国产| 国产精品第13页| 亚洲一区二区少妇| 欧美色欧美亚洲高清在线视频| 欧美深夜影院| 亚洲欧洲免费视频| 免费观看日韩| 韩国成人精品a∨在线观看| 午夜精品久久久久久久99黑人| 欧美黑人一区二区三区| 亚洲欧洲精品天堂一级| 欧美怡红院视频| 欧美国产日韩精品免费观看| 亚洲第一黄网| 免费日韩成人| 亚洲人成亚洲人成在线观看|