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();
},
I realized how to do it:
var deferred = me.options.beforeOpen.call( $me );
deferred
.done(function(){...})
.fail(function(){...})
Hope that will help someone.