开发者

how to highlight a div for a few seconds using jQuery

开发者 https://www.devze.com 2023-01-08 13:56 出处:网络
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

I want to be add the following to a a page:

When a div is clicked, I want to:

  1. change the background color of the clicked on div f开发者_高级运维or a few seconds
  2. 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

0

精彩评论

暂无评论...
验证码 换一张
取 消