我已经编写了一些代码来更改标签内每个字母的颜色,并在您悬停链接时显示弹出窗口。
mouseenter功能正常工作但是当你将鼠标悬停在链接上时,我希望与原始更改相反(因此请更改回原始颜色)。
我把延迟退出它的工作但是效果并不好。我很困惑为什么这对输入起作用但不在假期?
另一件值得一提的是当它确实将颜色变回灰色时,鼠标中心功能再次不起作用,这有点烦人。
以下是该网站的链接,以便您可以看到我在说什么,链接是底部的“触摸营销”链接
http://dev.touch-akl.com/colin/
请帮忙吗?
我的jQuery看起来像这样
$('#copyright a').mouseenter(function(){
var $letters = $(this).find('span'),
$sayhi = $(this).find('img'),
delay = 0;
$sayhi.animate({top:-30, 'opacity':1}, 500, "easeInOutExpo");
$letters.each(function(){
$(this).delay(delay).queue(function(){
$(this).css({'color':'#333'});
});
delay+=35;
}); // end each
}).mouseleave(function(){
var $letters = $(this).find('span'),
delay = 0;
$letters.each(function(){
$(this).delay(delay).queue(function(){
$(this).css({'color':'#333'});
});
delay+=35;
});
}); // end leave
答案 0 :(得分:1)
jQuery .queue()
使用起来很复杂,所以除非你需要与jQuery动画队列中的其他东西进行交互,否则使用这样的setTimeout()
往往要简单得多。您还应该使delay
成为局部变量,因此它不是隐式全局变量。
}).mouseleave(function(){
var delay = 0;
$(this).find('span').each(function(){
var item = $(this);
setTimeout(function(){
item.css({'color':'#333'});
}, delay);
delay+=35;
});
}); // end leave
答案 1 :(得分:-2)
问题很可能是你的函数在mouseenter和mouseleave中创建的闭包。他们都引用了相同的延迟变量。您可能想要将它们分开:
delayEnter = 0;
delayLeave = 0;