var element = document.querySelector(".star");
element.addEventListener("click", function() {
    if(element.className.indexOf('rotateInDownLeft') === -1) {
        element.className += ' rotateInDownLeft';
    } else {
        element.className = element.className.replace('rotateInDownLeft', 'bounceOutRight');
    }
});
function whichTransitionEvent(el){
    var t;
    var transitions = {
        'transition': 'transitionend',
        'OTransition': 'oTransitionEnd',
        'MozTransition': 'transitionend',
        'WebkitTransition': 'webkitTransitionEnd'
    }
    for(t in transitions){
        if( el.style[t] !== undefined ){
            return transitions[t];
        }
    }
}
function whichAnimationEvent(el){
    var a;
    var animations = {
        'animation': 'animationend',
        'OAnimation': 'oAnimationEnd',
        'MozAnimation': 'animationend',
        'WebkitAnimation': 'webkitAnimationEnd'
    }
    for(a in animations){
        if( el.style[a] !== undefined ){
            return animations[a];
        }
    }
}
var transitionEnd = whichTransitionEvent(element);
var animationEnd = whichAnimationEvent(element);
var onEnd = function(e) {
    if(e.animationName === 'bounceOutRight') {
        element.className = element.className.replace(/rotateInDownLeft/g, '').replace(/bounceOutRight/g, '');
    } else {
        element.innerHTML = element.innerHTML.replace('click me', 'click me again');
    }
}
element.addEventListener(transitionEnd, onEnd); 
element.addEventListener(animationEnd, onEnd); 
<div class="animated star">★<br /><span>click me</span></div>    
.star {
    font-size: 40px;
    background: #C9C9C9;
    padding: 20px;
    width: 100px;
    text-align: center;
    border-radius: 6px;
    margin: 0 auto;
    cursor: pointer;
    line-height: 20px;
}
.star span {
    font-size: 16px;
    font-weight: bold;
}