2015-10-20 6 views
0

Создание мобильного меню и если пользователь нажимает на документ, а не меню, чтобы закрыть меню, если оно открыто. Проблема заключается в том, что при первом нажатии на открытие мобильного устройства он автоматически закрывается. Я изо всех сил пытаюсь заставить этот бит работать.jQuery close menu auto close

Код распознает щелчок, чтобы окно обнаружило правильное действие. Я просто пропустил один последний шаг, я думаю.

Кодекс:

$('.mobile-menu-button').click(function(e) { 
    e.preventDefault(); 
    $('.mobile-menu').slideToggle('slow'); 
}); 
// close on off click 
$(window).click(function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
    if($('.mobile-menu').css("display") == 'block') { 
     $('.mobile-menu').slideToggle(); 
     console.log('click'); 
    } 
}); 

Благодаря

+0

добавить 'e.stopPropagation()' в обработчик меню щелчка. – Amit

+0

Это не работает – Jolen

ответ

1

Вы можете использовать делегирование событий. Когда вы нажимаете «.mobile-menu», вы открываете его или закрываете, когда вы нажимаете в другом месте, вы только закрываете его.

$(window).on('click', function(e){ 
    e.preventDefault(); 
    if ($(e.target).hasClass('mobile-menu-button')) { 
     $('.mobile-menu').slideToggle('slow'); 
    } else { 
     $('.mobile-menu').css('display') === 'block' && $('.mobile-menu').slideUp(); 
    } 
}); 

простой пример на эту скрипку: https://jsfiddle.net/6e7atrmn/2/

+0

Это не работает, меню не отображается – Jolen

+0

обновлено, это были некоторые детали, вы shohld получить идеи формы stackoverflow, а не код –

+0

не работает, делает то же самое, что и мой код ранее. Сдвигается вниз, а затем сразу выдвигается. – Jolen