jQuery скрыть раскрывающийся список, когда щелкнули где угодно, кроме меню

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

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

$(document).click(function(event) {
    if ($(event.target).parents().index($('.notification-container')) == -1) {
        if ($('.notification-container').is(":visible")) {
            $('.notification-container').animate({
                "margin-top": "-15px"
            }, 75, function() {
                $(this).fadeOut(75)
            });
        } else {
            //This should only show when you click: ".notification-button" not document
            $('.notification-container').show().animate({
                "margin-top": "0px"
            }, 75);
        }
    }
});
23
задан epoch 19 November 2014 в 13:30
поделиться

2 ответа

Функция jQuery closest () может использоваться, чтобы увидеть, находится ли щелчок внутри меню:

$('body').click(function(e) {
    if ($(e.target).closest('.notification-container').length === 0) {
        // close/animate your div
    }
});
33
ответ дан 29 November 2019 в 01:22
поделиться

попробуйте что-то вроде:

$(document).click(function(event) { 

if($(event.target).parents().index($('.notification-container')) == -1) {
    if($('.notification-container').is(":visible")) {
        $('.notification-container').animate({"margin-top":"-15px"}, 75, function({$(this).fadeOut(75)});
    }   
}        
});

$(".notification-button").click(function(event){
    event.stopPropagation();
    $('.notification-container').show().animate({"margin-top":"0px"}, 75);
});
1
ответ дан 29 November 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: