Плагин jQuery с методами и обратным вызовом - PullRequest
0 голосов
/ 07 января 2012

Я работаю над своего рода базовой платформой для плагинов jQuery. Я основываю структуру на примере jQuery Plugins / Authoring, найденном здесь .

Вот еще одна упрощенная версия структуры, которую я строю:

(function( $ ){
  var methods = {
     init : function( options ) { 
        var defaults = {
            // place default settings for plugin here
        }

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

        return this.each(function(){
            var $this = $(this),
                data = $this.data('PLUGINNAME'); 

            if ( ! data ) { 
             // do more setup stuff here
            }
        });
     },

     destroy : function( ) { 
       return this.each(function(){ 
        // do stuff to destroy any function binding
       })
     },

     update : function( content ) { 
        return this.each(function() { 
            //do your update stuff here
        })
     }
  };

  $.fn.PLUGINNAME = 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.PLUGINNAME' ); 
    }    
  };
})( jQuery );

Часть, которую я сейчас пытаюсь выяснить, - это как добавить функцию обратного вызова к вызову плагина. Я знаю, что мне понадобится другой параметр, подобный этому:

  $.fn.PLUGINNAME = function( method, callback ) {

но я не уверен, как реализовать это на основе того, что у меня сейчас есть.

1 Ответ

1 голос
/ 07 января 2012

Для вызова функции обратного вызова вы можете использовать метод .call.

init : function( options, callback ) { 
    callback.call(this, options);

В этом примере я передал параметры, но вы можете передать все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...