奇怪的是,我在 pass 项目中遇到了同样的问题。解决方案是在使用 javascript 的方法隐藏工具提示之前添加延迟。setTimeout
这是代码:
var closeTip = new Array();
$("#navButtons li").each(function (i) {
var $this = $(this);
$this.hover(function () {
clearTimeout(closeTip[i]); // cancell closing tooltip
if ($this.hasClass('visible')) {
return false; // we are still on, do nothing else
} else {
// we moved to another "li" element so reset everything
$("#navButtons li").removeClass('visible');
$("span.tooltip").hide();
}
// show "this" tooltip and add class "visible" as flag
$this.addClass('visible').find("span.tooltip").stop().fadeIn(300).mouseenter(function () {
clearTimeout(closeTip[i]); // cancell closing itself even if we leave
});
},
function () {
// delay closing tooltip unless is cancelled by another mouseenter event
closeTip[i] = setTimeout(function () {
$this.removeClass('visible').find("span.tooltip").stop(true, true).fadeOut();
}, 500);
});
}); // each
由于您不应该在同一文档中使用相同的IDid="tooltip"
,因此我将其全部转换为class="tooltip"
.
还要注意在脚本中我将 a 添加class="visible"
到悬停的元素并将相同的 css 属性设置为该选择器
#navButtons li.hours:hover span, #navButtons li.hours.visible span {
background-position: -1px -35px;
}
#navButtons li.login:hover span, #navButtons li.login.visible span {
background-position: -41px -35px;
}
#navButtons li.newsletter:hover span, #navButtons li.newsletter.visible span {
background-position: -83px -35px;
}
...所以当我们从按钮移到工具提示时,按钮也不会闪烁。
见JSFIDDLE