2012-11-08 40 views
2

我試圖觸發自定義事件,這將返回延期。
我在插件中使用觸發器,所以我不能只是做this.options.beforeOpen().done() ...因爲在beforeOpen()裏面的客戶端$(this)會在這種情況下返回options對象。jquery trigger返回推遲

$me.trigger('beforeOpen'). 
         done(function(){ 
          me._open(); 
         }) 
         .fail(function(){ 
          me.state = 'closed'; 
          $me.trigger('ifNotOpened.' + me.name); 
          $me.trigger('ifOpenedOrNot.' + me.name); 
         }) 

在我的自定義事件

$me.on('beforeOpen', function() { 
         var d = $.Deferred(); 
         setTimeout(function(){ d.resolve() },1000); 
         return d.promise(); 
        }, 

回答

0

我意識到如何做到這一點:

var deferred = me.options.beforeOpen.call($me); 
    deferred 
     .done(function(){...}) 
     .fail(function(){...}) 

希望這將幫助別人。