2013-05-13 89 views
2

我想在自定義jQuery插件的回調之前和之後添加。 我從來沒有嘗試過回調。所以請幫助我。jQuery - 在插件的回調之前和之後添加

這是我的插件代碼


(function($){ 
    $.fn.OneByOne = function(options){ 

     var defaults = { 
      startDelay:5,   
      duration: 1000, 
      nextDelay: 700 
     }; 

     var options = $.extend(defaults, options); 
     var delay = options.startDelay; 
     return this.each(function(){ 

      var o = options; 
      var obj = $(this);     
      var a = $('a', obj);   

      obj.css({'margin-top':'100px','opacity': '0'});   
      obj.delay(delay).fadeIn().animate({opacity: 1,'margin-top':'0'}, o.duration); 
      delay += o.nextDelay; 


     }); 


    }; 
})(jQuery); 

前和後的回調


我想打電話給before回調到哪裏調用之前:

obj.css({'margin-top':'100px','opacity': '0'});   
    obj.delay(delay).fadeIn().animate({opacity: 1,'margin-top':'0'}, o.duration); 
    delay += o.nextDelay; 

並且想要撥打after回撥剛纔上面的代碼。

我需要回調


我想用我的回調

http://ricostacruz.com/jquery.transit/

過渡。

請同時告訴我如何在調用插件時使用回調函數。

謝謝。

+1

我知道你希望插件接受用戶的回調定義之前和之後嗎? – sixFingers 2013-05-13 11:28:23

+0

http://stackoverflow.com/questions/2534436/jquery-plugin-adding-callback-functionality – worenga 2013-05-13 11:29:09

+0

@sixFingers,是回調定義是由用戶給出 – user007 2013-05-13 11:31:50

回答

2
  1. 讓用戶在回調之前和之後通過。 裏面您的默認值,指定一個默認的回調函數:

    在$插件
    var defaults = { 
        startDelay:5,   
        duration: 1000, 
        nextDelay: 700 
    }; 
    
    // Test if user passed valid functions 
    options.before = typeof options.before == 'function' ? options.before || function(){}; 
    options.after = typeof options.after == 'function' ? options.after || function(){}; 
    

    選項在哈希獲得通過,從而使用戶能夠通過他們的

    $("…").OneByOne({…, before: function() {}, after: function() {}); 
    
  2. 在你的插件代碼,你有勾給他們,讓他們得到所謂的(默認的值,或任何用戶定義的回調):

    // Before is simply called before starting animation 
    // Use call or apply on the callback passing any wanted argument. 
    before.call(this, obj); 
    // After callback is passed directly to animate function and gets called on animation complete. 
    obj.delay(delay).fadeIn().animate({opacity: 1,'margin-top':'0'}, o.duration, after); 
    
  3. 任何參數爲「前」回調會在回調之前用戶定義的可用;回調後將調用obj上下文,所以在回調後定義的任何用戶,$(this)是你的obj的

+0

我正要回答這個問題,直到我看到你的問題。對,但我最好測試一下,如果用戶輸入了前後參數作爲函數(使用typeof或jquery isFunction())以執行一些後備機制,否則。 – Arman 2013-05-13 12:20:00

+0

你是對的,編輯。 – sixFingers 2013-05-13 12:20:48

+1

或者也許沒關係,因爲許多其他人都做得很好,即使是[jquery book](http://www.manning.com/bibeault/)的示例代碼之一:) – Arman 2013-05-13 12:30:37

相關問題