$('.file a').live('mouseenter', function() {
$('#download').stop(true, true).fadeIn('fast');
}).live('mouseleave', function() {
$('#download').stop(true, true).fadeOut('fast');
});
Я хочу mouseenter
функция, чтобы иметь a stop()
и задержка 1 секунды. Так, если я толплюсь #download
fadeIn
должен запуститься после 1 второй задержки. Если я мышь между тем fadeIn
не должен запускаться. Получите меня?
Я действительно не знаю, как сделать это, какие-либо идеи?
Вам нужно использовать setTimeout()
в этом случае из-за того, как работает .delay()
(и вашей невозможности отменить его).
$('.file a').live('mouseenter', function() {
$.data(this, 'timer', setTimeout(function() {
$('#download').stop(true, true).fadeIn('fast');
}, 1000));
}).live('mouseleave', function() {
clearTimeout($.data(this, 'timer'));
$('#download').stop(true, true).fadeOut('fast');
});
Вы можете попробовать это здесь.
Если вы используете .delay()
это приведет к декею следующей анимации для элемента, независимо от того, очистили ли вы эту очередь ранее. Поэтому вам нужен таймаут, который вы можете отменить, что и делается в приведенном выше примере, вызывая вручную setTimeout()
и сохраняя результат в $.data()
чтобы вы могли очистить его позже, через clearTimeout()
.
Используйте функцию setTimeout
$('.file a').live('mouseenter', function() {
setTimeout(function(){
$('#download').stop(true, true).fadeIn('fast');
}, 1000);
}).live('mouseleave', function() {
$('#download').stop(true, true).fadeOut('fast');
});
setTimeout выполнит код внутри функции через указанные милисекунды (в данном случае 1000).