Метод jQuery в плагине Caller - PullRequest
1 голос
/ 18 марта 2011

Я пишу свой первый плагин jQuery, и я столкнулся с несколькими скачками скорости. Вот что я хотел бы, чтобы мой вызывающий плагин делал, в основном, но я не уверен, как структурировать плагин:

$('div.selector').myPlugin(
    'dataloader', {
    { 
        source : 'source.json',
        autoUpdate : true
    },

    buildComplete : function() {
        //Do something when the building is completed
    }
});

Таким образом, в основном требуется значение «dataloader», опции внутри фигурных скобок являются необязательными настройками, а buildComplete - это функция, которая выполняется после того, как что-то завершено.

Я не уверен, как реализовать функцию "buildComplete" (или подобную) в вызывающем модуле плагина. Я хотел бы , чтобы избежать способа, показанного ниже, поскольку "buildComplete" будет отличаться для каждой используемой страницы:

//No can do!
$('div.selector').myPlugin('dataloader').buildComplete('do something');

Есть ли базовый пример, где я мог бы найти что-нибудь по этому поводу?

Спасибо, spryno724

Ответы [ 2 ]

0 голосов
/ 18 марта 2011
$.extend({
  myPlugin : function( parameters, callbackFn ){

   ...do what needs to be done...

    if( $.isFunction( callbackFn ) ){
      callbackFn.call( someArguments);
    }

  }

});

$.myPlugin( { param1: 'sdfsdf' }, function(args){
 ..here's your callback...
});
0 голосов
/ 18 марта 2011

Это должно помочь вам начать

(function($){ // avoid variable polution by wrapping like this
    $.fn.myPlugin = function(dataloader,options_in){
            options = $.extend({},{ // create option object by extending empty array with default values and then overwriting with passed options
                buildComplete: $.noop // default value for buildComplete is empty function
            },options_in)

            if(condition == met){ // in certain circumstance
                options.buildComplete() // run the buildComplete function
            }

        }
})(jQuery)

// call like this
$('div.delector').myPlugin('dataloader',{ buildComplete: function(){ alert('the build is complete') }, otherOption: 'whatever' })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...