2016-12-20 2 views
0

На моем веб-сайте у меня есть закрытое меню аккордеона (меню-1). Если пользователь не нажмет на меню в течение первых 5 секунд пребывания на сайте, в меню падает вниз автоматически, используя этот JS код:Как отменить триггер после нажатия

setTimeout(function() { 
    $('#menu-1').trigger('click'); 
}, 5000); 

Моя проблема в том, когда пользователь не ждать 5 секунд , и нажимает на меню перед триггером, триггер по-прежнему отключается и заканчивает закрытие меню. Как сделать так, чтобы триггер был отменен, если пользователь нажимает на меню до его запуска?

+0

попробовать с условиями –

ответ

4

Вам необходимо сохранить идентификатор тайм-аута в переменной, чтобы впоследствии можно отменить его, если пользователь нажимает на меню. Как это ...

var timeout_id = setTimeout(function() { 
    $('#menu-1').trigger('click'); 
}, 5000); 

$('#menu-1').click(function() { 
    if (timeout_id) { 
     clearTimeout(timeout_id); 
     timeout_id = 0; 
    } 
}); 
+0

Переменная работает, но меню все еще заканчивается закрытием после того, как пользователь открывает его –

+0

Nevermind, это работает, я не видел, правку –

+0

@AlexKhomyakov Может быть, вы могли бы принимайте это как ответ? – user1751825