延迟在mouseenter / hover上添加/删除类

时间:2013-09-23 17:37:43

标签: jquery

当用户将鼠标悬停在元素上时,我试图延迟向元素添加和删除类:

$('#thumbs div').mouseenter(function() {            
    $('#thumbs div').removeClass('hovered');
    $(this).addClass('hovered');
});

有办法做到这一点吗?我希望延迟大约0.3秒。

谢谢!

4 个答案:

答案 0 :(得分:0)

$("#thumbs div").mouseenter(function() {            
    var self = $(this);    

    self.removeClass('hovered');

    window.setTimeout(function() {
        self.addClass('hovered');
    }, 300);
});

答案 1 :(得分:0)

你可以排队:

$("#thumbs div").mouseenter(function() {
  $(this).delay(300).queue(function(next){
    $('#thumbs div').removeClass('hovered');
    $(this).addClass('hovered');
    next();
  });
});

如果鼠标离开http://api.jquery.com/clearQueue/之类的东西,你可能想要取消它/清除队列。

答案 2 :(得分:0)

您可以尝试这样的事情

$("#thumbs div").on('mouseenter', function() {            
    var el = $(this);    
    setTimeout(function() {
        $('#thumbs div').removeClass('hovered');
        el.addClass('hovered');
    }, 300);
}).on('mouseleave', function(){
    var el = $(this);
    setTimeout(function() {
        el.removeClass('hovered');
    }, 300);
});

DEMO.

答案 3 :(得分:0)

试试这个:

 $("#thumbs div").mouseenter(function() {   
      $(this).removeClass('hovered');
      setTimeout("addClassCustom", 300);
 });

 function addClassCustom() {
      $("#thumbs div").addClass('hovered');
 }