我有一个导航,我想要一个类似于selfridges的背景停电。
jQuery:
jQuery('<div class="backmask"></div>').insertAfter('.wrapper');
function removeBlack() {
jQuery('.nav-container').removeClass('navmask');
jQuery('.backmask').fadeOut(300);
}
function addBlack() {
jQuery('.nav-container').addClass('navmask');
jQuery('.backmask').fadeIn(100);
}
jQuery('.nav li').hover(addBlack, removeBlack);
但是,当您将鼠标从一个元素移到另一个元素时,它会闪烁,而不仅仅是保持黑色背景完好无损。
我已经在 2 个函数中尝试了各种“if”语句,并且我一直到一个阶段,我认为是的,它几乎完成了,但是它又失败了。
ps 我不想将#nav li 更改为仅#nav,因为如果我的导航没有延伸导航的整个宽度,我不希望人们将鼠标悬停在空白空间中以使其背景变黑。
有任何想法吗?我只是缺少一个关键的 jquery 选择器吗?例如,将所有这些#nav li 视为一个元素?
谢谢。
###编辑由于 mornaner 的有用回答,这是我现在的代码:
jQuery('<div class="backmask"></div>').insertAfter('.wrapper');
function removeBlack() {
jQuery('.nav-container').removeClass('navmask');
jQuery('.backmask').fadeOut(200);
}
function addBlack() {
jQuery('.nav-container').addClass('navmask');
jQuery('.backmask').fadeIn(100);
}
jQuery('#pronav li').hover(function(){
clearTimeout(jQuery(this).data('timeoutId'));
addBlack();
}, function(){
var nav = jQuery('#pronav li');
var timeoutId = setTimeout(function(){
removeBlack();
}, 80);
//set the timeoutId, allowing us to clear this trigger if the mouse comes back over
nav.data('timeoutId', timeoutId);
});