我正在开发一个jQuery下拉菜单,当您将鼠标悬停在顶级项目上时,该菜单会消失。我想设置它,以便当您移动鼠标时,菜单不会立即消失。我有这段代码:
$(document).ready(function(){
$('ul#menu > li').hover(
// mouseover
function(){
$(this).find('>ul').fadeIn('fast');
},
// mouseout
function(){
setTimeout( function(){
alert('fadeout');
$(this).find('>ul').fadeOut('fast')
}, 1000 );
}
);
});
一秒钟后警报发生,但菜单没有淡出。
答案 0 :(得分:3)
window.setTimeout(),所以这是指窗口对象。
// mouseout
function(){
var el=this;
setTimeout( function(){
alert('fadeout');
$(el).find('>ul').fadeOut('fast')
}, 1000 );
}
答案 1 :(得分:3)
看看hoverIntent。通过配置,它可以让您更好地控制mouseover
/ mouseout
事件的行为:
var config = {
sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
interval: 200, // number = milliseconds for onMouseOver polling interval
timeout: 500, // number = milliseconds delay before onMouseOut
};
$(document).ready(function(){
$('ul#menu > li').hoverIntent(
// mouseover
function(){
$(this).find('>ul').fadeIn('fast');
},
// mouseout
function(){
$(this).find('>ul').fadeOut('fast');
}
);
});