嘿!
我在这里可能是个傻瓜,但我想不通;
我正在用 javascript 中的基本 hover() 函数构建一个水平菜单。当您离开锚点时,在悬停效果消失之前会有短暂的超时。
所以我想做的是:在锚点的 ID 之后命名超时,触发 mouseleave 以在 mouseenter 上再次停止正确的超时。
在 Mouseenter 上,我通过获取 id 检查哪个锚点悬停,我取消了此 id 的超时并将 hvr-Class 添加到悬停的锚点:
var t = $(this).attr('id');
clearTimeout(t);
$(this).addClass('hvr');
在 Mouseleave 上,我基本上想这样做:
$(this).attr('id') = setTimeout('doSoemthing()',66);
但这会导致错误,因为 = 的左侧不允许使用该表达式。我想过这样的事情:
var ts = $(this).attr('id');
ts = setTimeout('doSoemthing()',66);
但这也不起作用,因为它只是覆盖了变量 t。相反,我想“打印”超时名称的变量值。如果我使用固定的超时名称,一切都会像魅力一样工作,但每个链接只有一个(相同的)超时,但它不会这样做。
有没有办法做到这一点?还是我偏离了轨道?
这就是完整的功能:
$("nav a").hover(
function(){
// On MouseEnter
var t = $(this).attr('id');
clearTimeout(t);
$(this).addClass('hvr');
},function(){
// On MouseLeave
$(this).attr('id') = setTimeout(function(){doSomethingHere},66);
}
);
在此先感谢,最好的问候。