I want to be add the following to a a page:
When a div is clicked, I want to:
One way is to go about like this using setTimeout:
$(function () {
$('div.highlightable').click(function () {
$(this).addClass('highlighted');
setTimeout(function () {
$('div.highlightable').removeClass('highlighted');
}, 2000);
});
});
I think you are looking for the Highlight effect.
http://docs.jquery.com/UI/Effects/Highlight
For posterity, here is an answer involving the jQuery queue() function.
$('.menul').addClass('red').delay(1000).queue(function(next){
$(this).removeClass('red');
next();
});
From: https://forum.jquery.com/topic/inserting-a-delay-between-adding-and-removing-a-class#14737000002257187
You can use the jQuery UI's Highlight Effect:
$(".myDiv").effect("highlight", {}, 3000);
$(function() {
$(".myDiv").click(function() {
$(this).effect("highlight", {}, 3000);
});
});
.myDiv {
margin: 0px;
width: 100px;
height: 80px;
background: #666;
border: 1px solid black;
position: relative;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<div class="myDiv"></div>
You could use the setTimeout function:
$('div.highlightable').click(function(){
var $this = $(this);
//change background color via CSS class
$this.addClass('highlighted');
// set a timeout that will revert back class after 5 seconds:
window.setTimeout(function() {
$this.removeClass('highlighted');
}, 5 * 1000);
});