Javascript 如何使用onstart和oncomplete创建jquery函数

Javascript 如何使用onstart和oncomplete创建jquery函数,javascript,jquery,Javascript,Jquery,我正在尝试创建自己的jquery函数,我知道如何添加选项,但不知道如何添加“onStart”或“onComplete”功能 这就是我目前所知道的: jQuery.somefunctionname = function (options) { var settings = {}, defaults = { 'someoption': 'somevalue', 'someoption2': 'somevalue2', 'someoption3'

我正在尝试创建自己的jquery函数,我知道如何添加选项,但不知道如何添加“onStart”或“onComplete”功能

这就是我目前所知道的:

jQuery.somefunctionname = function (options) {
var settings = {},
    defaults = {
        'someoption': 'somevalue',
        'someoption2': 'somevalue2',
        'someoption3': 'somevalue3'
    }
settings = $.extend({}, defaults, options);

    //do something functional
    alert("hey i'm a function");
}
但是,如果我希望用户能够在我的函数之前(onStart)和之后(onComplete)添加他们自己的代码,我应该编写什么代码

用户应该能够这样写:

$.somefunctionname({
   'someoption' : 'a',
   'someoption2' : 'b',
   'someoption3' : 'c',

   'onStart' : function() {
      //whatever user want when my function started
   },
   'onComplete' : function() {
      //whatever user want when my function ended
   } });
jQuery.somefunctionname = function (options) {
   if (typeof options.onStart === "function")
      options.onStart.call(this);

   // other function code here

   if (typeof options.onComplete === "function")
      options.onComplete();
      // OR
      options.onComplete.call(this);
      // OR
      options.onComplete.apply(this, argsArrayIfDesired);
      // etc.
};

thx;)

只需为的那些设置设置一个默认值,然后您就可以知道,使用或类似方法将该设置的值作为函数调用是安全的

e、 g


在您的职能范围内,执行以下操作:

$.somefunctionname({
   'someoption' : 'a',
   'someoption2' : 'b',
   'someoption3' : 'c',

   'onStart' : function() {
      //whatever user want when my function started
   },
   'onComplete' : function() {
      //whatever user want when my function ended
   } });
jQuery.somefunctionname = function (options) {
   if (typeof options.onStart === "function")
      options.onStart.call(this);

   // other function code here

   if (typeof options.onComplete === "function")
      options.onComplete();
      // OR
      options.onComplete.call(this);
      // OR
      options.onComplete.apply(this, argsArrayIfDesired);
      // etc.
};

也就是说,如果属性是在
选项中定义的,并且实际上是一个函数,那么在适当的点调用它。如果需要,使用
.call()
.apply()
指定此
的设置,并包括任何参数。与
设置集成
对象或不按需要集成。

它给了我错误“settings.onStart未定义”。我不知道为什么。