不思議なことに、パスプロジェクトで同じ問題が発生しました。解決策は、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"
、ホバーされた要素にaを追加し、そのセレクターに同じ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を参照してください