$.fn.transitionEnd = function(callback) { var $this = $(this); return $this.one('transitionend', callback); }; $('button').click(function() { $(this).transitionEnd(function() { $('body').append('<br />transition ended'); }); $(this).toggleClass('wide'); });
<button>Click me</button>
button { width: 100px; transition: all 0.5s linear; } button.wide { width: 200px; }