簡體   English   中英

如何使用onstart和oncomplete創建jquery函數

[英]how to create jquery function using onstart and oncomplete

我正在嘗試創建自己的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.
};

也就是說,如果屬性是在options定義的並且實際上是一個函數,那么在適當的位置調用它。 指定的設定this使用.call().apply()如果需要的話,並且包括任何參數。 是否根據需要與您的settings對象集成。

只需擁有jQuery.noop那些設置的默認值,然后您就可以知道使用apply()或類似方法將該設置的值作為函數調用是安全的。

例如

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

    settings.onStart.apply(this);

    //do something functional
    alert("hey i'm a function");

    settings.onComplete.apply(this);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM