jQuery addClass example

Change class name on click in jQuery

by shanemendez

HTML

<div id="banner-message">
  <p id='console'>Hello World</p>
  <button>Change color</button>
  <div id="movable">move me</div>
  <div id='movehere'>
    here
  </div>
</div>

CSS

body {
  background: #20262E;
  /* padding: 20px; */
  font-family: Helvetica;
}

#banner-message {
  background: #fff;
  border-radius: 4px;
  /* padding: 20px; */
  font-size: 25px;
  text-align: center;
  transition: all 0.2s;
  margin: 0 auto;
  width: 300px;
}

button {
  background: #0084ff;
  border: none;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

#banner-message.alt {
  background: #0084ff;
  color: #fff;
  margin-top: 40px;
  width: 200px;
}

#banner-message.alt button {
  background: #fff;
  color: #000;
}

JavaScript

// find elements
var banner = $("#banner-message")
var button = $("button")
var movehere = $('#movehere')
var moveme = $('#movable')
var con = $('#console')
// handle click and add class

setTimeout(()=>{moveAnimate(moveme,movehere)},500)


function move(elem,to){
  to.appendChild(elem)
}

 function moveAnimate(element, newParent){
    //Allow passing in either a jQuery object or selector
    element = $(element);
    newParent= $(newParent);
    var newElement = element.clone().appendTo(newParent)
    var oldOffset = element.offset();
    var newOffset = newElement.offset();
 		
    var temp = element.clone().appendTo(element.parent());
    console.log(element)
    temp.css({
        'position': 'absolute',
        'left': oldOffset.left+element.innerWidth()/2,
        'top': oldOffset.top,
        'z-index': 1000
    });
    element.css('visibility','hidden')
    newElement.css('visibility','hidden')
    	temp.animate({'top': newOffset.top, 'left': newOffset.left+element.innerWidth()/2}, 'slow', function(){
      element.appendTo(newParent)
      element.css('visibility','visible')
      newElement.remove()
      temp.remove();
    }); 
 }