How to attach callback to jquery effect on dialog show? How to attach callback to jquery effect on dialog show? jquery jquery

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/


I downloaded the jquery ui dev bundle and found out that the callback is set with "complete":

$( ".selector" ).dialog({ show: 'slide', complete: function() {} });

Thanks for everyone trying to help solve this :)