jQuery-setTimeout无法与$(this).find一起使用

时间:2019-03-28 18:45:00

标签: jquery settimeout mouseleave

我想做的显然是针对特定的“ gridWrap”元素(一个悬停的元素),并在500ms后删除一个类,但它似乎不起作用。

这就是我所拥有的

$(".gridWrap").mouseleave(function(){
  setTimeout(function(){
    $(this).find('.gridOverlay').removeClass('active');
  }, 500);
  $(this).find('.viewSite').removeClass('bounceInDown').addClass('bounceOutUp');
});

这很好,但是我需要延迟“活动”类的移除:

$(".gridWrap").mouseleave(function(){
$(this).find('.gridOverlay').removeClass('active');
$(this).find('.viewSite').removeClass('bounceInDown').addClass('bounceOutUp');
});

2 个答案:

答案 0 :(得分:0)

如前所述,此上下文更改超时功能。 试试这个:

$(".gridWrap").mouseleave(function(){
  var self = $(this);
  setTimeout(function(){
    self.find('.gridOverlay').removeClass('active');
  }, 500);
  $(this).find('.viewSite').removeClass('bounceInDown').addClass('bounceOutUp');
});

答案 1 :(得分:0)

为此在“ settimeout”之前创建一个变量,效果很好