茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

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

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

    基礎(chǔ)

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

    1.1、添加靜態(tài)方法

    jQuery.extend(object);

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

    $.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){ 

        //各種屬性和參數(shù) 

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

        this.each(function(){ 

          //插件的實現(xiàn)代碼

        }); 

      }; 

    })(jQuery);

    關(guān)于

    $.extend(defaults, options);

    就是通過合并defaults和options來擴展defaults,實現(xiàn)插件默認參數(shù)的功能。

    實踐

    1、聲明插件名稱:

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

    jQuery.fn.myPlugin = function() {

     // Do your awesome plugin stuff here

    };

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

    (function( $ ) {

     $.fn.myPlugin = function() {

      // Do your awesome plugin stuff here

     };

    })( jQuery );

    2、插件中的上下文:

    jQuery接收一個回調(diào),該回調(diào)本身就指向了dom,直接使用this就相當(dāng)于我們平時的$(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插件,實現(xiàn)獲取所有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、維護鏈接性:

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

    (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關(guān)鍵字的范圍,它維護鏈接性,jQuery可以繼續(xù)利用jQuery方法,如. css。所以,如果你的插件不返回一個內(nèi)在價值,你應(yīng)該總是返回this。

    4、參數(shù)的傳遞,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合并默認參數(shù)和調(diào)用者傳入的參數(shù)。

    5、命名空間:

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

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

    (function( $ ){

     $.fn.tooltip = function( options ) { 

      // THIS

     };

     $.fn.tooltipShow = function( ) {

      // IS

     };

     $.fn.tooltipHide = function( ) { 

      // BAD

     };

     $.fn.tooltipUpdate = function( content ) { 

      // !!! 

     };

    })( jQuery );

    你應(yīng)該收集所有的方法到一個對象化字面,并且通過方法的字面值進行調(diào)用:

    (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!');

    這種類型的方法封裝和體系結(jié)構(gòu)在jQuery插件社區(qū)中是一個標(biāo)準(zhǔn),它適用于無數(shù)的插件,包括jQueryUI插件和小部件。

    6、Events:

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

    (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:

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

    這里通過編寫插件,實現(xiàn)在頁面中的每個元素都綁定一些當(dāng)前的狀態(tài)或者內(nèi)容。

    (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 );

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機網(wǎng)站地址:總結(jié)jQuery插件開發(fā)中的一些要點
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)