У меня есть эта проблема. Я определил функцию для удаления ссылки (только для примера), поэтому я хочу, чтобы после события mouseleave в ссылке он исчезнет через 5 секунд (или что-то еще). Кроме того, если я нахожусь по той же ссылке (которая якобы запускает setTimeout), то setTimeout отменяется. Например, работает следующий код, но поскольку я не определяю свой setTimeout, я не могу его отменить.Weird setTimeout issue
function func() { $('a').remove(); }
//var interval = setTimeout(func , 5000);
$('body').on('mouseleave', 'a', function() {
setTimeout(func , 5000);
});
$('body').on('mouseenter', 'a', function(){
// clearTimeout(interval)
});
Вместо раскомментирован вторую линию, делает связь исчезает сразу, даже несмотря на то, что я с помощью функции func
без скобок, так что я бы подумал, что не будет проблемой (fiddle):
function func() { $('a').remove(); }
var interval = setTimeout(func , 5000);
$('body').on('mouseleave', 'a', function() {
interval
});
$('body').on('mouseenter', 'a', function(){
// clearTimeout(interval)
});
Что можно сделать для достижения намеченной функциональности ?.
Спасибо!
Brilliant :-). Спасибо, он работает безупречно. –
Yup. Вы были так близки! Вы должны попытаться заглянуть в свой отладчик, чтобы узнать, что происходит в следующий раз. –
Я использовал console.log совсем немного, но мне не приходило в голову определить «интервал» снаружи и с использованием interval = setTimeout внутри функции mouseleave. –