Edit in JSFiddle

$.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;
}