Search code examples
jquerypluginstriggersdeferred

jQuery trigger returns deferred


I'm trying to trigger custom event, which will return deferred.

I use trigger inside plugin, so I can't just do this.options.beforeOpen().done()... because inside beforeOpen() at the client side $(this) will return options object in this case.

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

Inside my custom event

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

Solution

  • I realized how to do it:

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

    Hope that will help someone.