Я показываю предварительный просмотр изображения при наведении на изображение. Теперь я сохраняю интервал перед отображением изображения предварительного просмотра. скажем, я установил задержку как 1 сек, и в этом случае, если я вытащил мышь из изображения, она все еще отображает предварительный просмотр, так как она запускается во время ввода мыши. Как это исправить?
Мне нужно отображать предварительный просмотр только при наведении после 1сек задержки, а не если мышь не с изображением?
Основным скелетом, использующим setTimeout(), может быть
var timer;
$('img').hover(function () {
timer = setTimeout(function () {
//do your stuff here
$('div').show();
timer = undefined;
}, 1000);
}, function () {
if (timer) {
clearTimeout(timer);
timer = undefined;
} else {
//hide the preview
$('div').hide();
}
})
Демо: скрипка
В jQuery 1. 9+ вы можете использовать delay/finish
:
$("#preview").hover(function(){
$("img").delay(1000).show(0); // passing 0 to show() will put animation in queue
}, function(){
$("img").finish().hide(); // finish() will clear any previous delay(), despite what argues the DOC
});
Назначьте setTimeout переменной в событии mouseover следующим образом:
var timer = setTimeout(function() { doSomething(); }, 1000);
И затем очистите его на событии mouseout, чтобы он не показывался, когда вы наводили его:
clearTimeout(timer);
setTimeout()
) для задержки отображения