奇怪的是,我遇到了一個通過項目相同的問題。解決方法是在使用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
既然你不應該在同一個文檔中使用相同的ID,我全部轉換成id="tooltip"
class="tooltip"
。
也是我增加了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
來源
2013-01-10 22:03:16
JFK
一個解決方法是添加一個絕對定位的div與透明背景填充該空間,所以用戶從來沒有真正懸停的列表項目...但這是骯髒的。其他想法? – JCHASE11
做**不**,從不,不再使用多個ID的每頁!將'#tooltip'改成一個類! –
** + 1 **優秀的問題! – arttronics