jQuery 当用户将鼠标移开时悬停延迟
jQuery Hover with Delay when the user moves their mouse away
所以我试图实现一种弹出情况,用户将悬停在一个元素上,当用户悬停在该元素上时,jQuery 将 class 添加到另一个同级元素,这使得它可见。当用户悬停时,我想在 class 再次被删除之前添加大约 5 秒的延迟,但我尝试这样做到目前为止还没有成功,任何人都可以给我一个关于什么方法的指针我可以用吗?
这是我目前使用的代码:
$('.spaceship-container').hover(
function(){
$('.take-me-to-your-newsletter').addClass('show')
},
function(){
setTimeout(3000);
$('.take-me-to-your-newsletter').removeClass('show')
}
);
您需要在 setTimeout
的回调中添加 removeClass
,如下所示:
$('.spaceship-container').hover(
function(){
$('.take-me-to-your-newsletter').addClass('show')
},
function(){
setTimeout(function(){
$('.take-me-to-your-newsletter').removeClass('show') //here
},3000);
});
这样一旦 3 秒时间结束,回调函数中的代码就会被执行。
加一个DEMO给你
使用 setTimeout()
function fixes your issue. But you also need to stop mouseout function using clearTimeout()
.
的正确语法
var timer;
$('.spaceship-container').hover(
function() {
clearTimeout(timer);
$('.take-me-to-your-newsletter').addClass('show');
},
function() {
timer = setTimeout(function(){
$('.take-me-to-your-newsletter').removeClass('show');
}, 3000);
}
);
所以我试图实现一种弹出情况,用户将悬停在一个元素上,当用户悬停在该元素上时,jQuery 将 class 添加到另一个同级元素,这使得它可见。当用户悬停时,我想在 class 再次被删除之前添加大约 5 秒的延迟,但我尝试这样做到目前为止还没有成功,任何人都可以给我一个关于什么方法的指针我可以用吗?
这是我目前使用的代码:
$('.spaceship-container').hover(
function(){
$('.take-me-to-your-newsletter').addClass('show')
},
function(){
setTimeout(3000);
$('.take-me-to-your-newsletter').removeClass('show')
}
);
您需要在 setTimeout
的回调中添加 removeClass
,如下所示:
$('.spaceship-container').hover(
function(){
$('.take-me-to-your-newsletter').addClass('show')
},
function(){
setTimeout(function(){
$('.take-me-to-your-newsletter').removeClass('show') //here
},3000);
});
这样一旦 3 秒时间结束,回调函数中的代码就会被执行。
加一个DEMO给你
使用 setTimeout()
function fixes your issue. But you also need to stop mouseout function using clearTimeout()
.
var timer;
$('.spaceship-container').hover(
function() {
clearTimeout(timer);
$('.take-me-to-your-newsletter').addClass('show');
},
function() {
timer = setTimeout(function(){
$('.take-me-to-your-newsletter').removeClass('show');
}, 3000);
}
);