使用以下代码:
$('someelement').hover(
function() {
console.log('mouseenter begin');
setTimeout(function() {
console.log('mouseenter ends');
}, 2000);
},
function() {
console.log('mouseleave begin');
setTimeout(function() {
console.log('mouseleave ends');
}, 2000);
}
)
如果我进入和离开div有时(或一次少于2秒)我的控制台得到:
mouseenter begin
mouseleave begin
mouseenter ends
mouseleave ends
我希望只在mouseenter
结束时执行mouseleave,但不知道如何。
mouseenter begin
mouseenter ends
mouseleave begin
mouseleave ends
答案 0 :(得分:2)
你可以创建一个队列......
var queue = []
$('someelement').hover(
function() {
queue.push('mouseenter begin');
setTimeout(function() {
var item = queue.shift();
if (item)
console.log(item)
console.log('mouseenter ends');
}, 2000);
},
function() {
queue.push('mouseleave begin');
setTimeout(function() {
var item = queue.shift();
if (item)
console.log(item)
console.log('mouseleave ends');
}, 2000);
}
)