0

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

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

有没有办法做到这一点?例如,我想要大约 0.3 秒的延迟。

谢谢!

4

4 回答 4

1

你可以试试这样的

$("#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);
});

演示。

于 2013-09-23T17:55:38.623 回答
0
$("#thumbs div").mouseenter(function() {            
    var self = $(this);    

    self.removeClass('hovered');

    window.setTimeout(function() {
        self.addClass('hovered');
    }, 300);
});
于 2013-09-23T17:42:18.520 回答
0

你可以排队:

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

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

于 2013-09-23T17:55:30.187 回答
0

试试这个:

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

 function addClassCustom() {
      $("#thumbs div").addClass('hovered');
 }
于 2013-09-23T17:57:32.917 回答