jQuery - setTimeout无法使用$(this).find [duplicate]

问题描述 投票:0回答:2

我试图做的显然是针对一个特定的“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');
});
jquery settimeout mouseleave
2个回答
0
投票

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

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

0
投票

在'settimeout'之前为它创建一个变量,它运行良好

© www.soinside.com 2019 - 2024. All rights reserved.