I want to be add the following to a a page:
When a div is clicked, I want to:
- change the background color of the clicked on div f开发者_高级运维or a few seconds
- revert back to the original background color after a few seconds
I want to do this by using only jQuery available functions - i.e. not using a plugin or anything else. I am relatively new to jQuery, but I think a possible solution involves the use of changing the class of the selected div and using a timer.
I am not sure how to put it all together though. Can anyone provide a few lines that show how to do it?
This is what I have so far:
$(function(){
$('div.highlightable').click(function(){
//change background color via CSS class
$(this).addClass('highlighted);
//set a timer to remove the highlighted class after N seconds .... how?
});
});
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);
});
});
You can use the jQuery UI's Highlight Effect:
$(".myDiv").effect("highlight", {}, 3000);
Demo in Stack Snippets:
$(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>
I think you are looking for the Highlight effect.
http://docs.jquery.com/UI/Effects/Highlight
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);
});
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
精彩评论