1

我正在编写我的第一个 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

4

2 回答 2

0

这应该让你开始

(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' })
于 2011-03-17T23:54:14.523 回答
0
$.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...
});
于 2011-03-18T00:02:15.070 回答