How to attach callback to jquery effect on dialog show?
Update 2015-07-27 For anyone using jQuery v1.10.0 or above please see this other answer as my solution will not work with newer versions of jQuery.
Original answer
Already answered but since I had an answer, I'm going to post it anyway…
$('#dialog').dialog({ show: { effect: 'slide', complete: function() { console.log('animation complete'); } }, open: function(event, ui) { console.log('open'); }});
Shows open
followed by animation complete
in the Console
Two years later, the suggested solution (by @andyb) is no longer working in current versions of jQuery UI (specifically since v1.10.0). His solution relied on the complete
callback method - an undocumented feature .
I've came up with an up-to-date solution, using jQuery Promise
object:
$("#dialog").dialog({ show: { effect: "drop", direction: "up", duration: 1000 }, hide: { effect: "drop", direction: "down", duration: 1000 }, open: function () { $(this).parent().promise().done(function () { console.log("[#Dialog] Opened"); }); }, close: function () { $(this).parent().promise().done(function () { console.log("[#Dialog] Closed"); }); }});
Here is the usual JSFiddle Demo: http://jsfiddle.net/losnir/jcmpm/