Раскрывающийся список, который скрывается за пределами меню.

0

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

Вы можете найти его здесь: http://codepen.io/dr-potato/pen/rLleC?editors=101

HTML

<ul>
  <li><a href="#">Home</a></li>
  <li class="Navigation-listItem is-dropdown">
    <a href="#">About</a>
    <ul class="Navigation-list is-dropdown is-hidden">
        <li>Johnny</li>
        <li>Julie</li>
        <li>Jamie</li>
    </ul>
  </li>
  <li class="Navigation-listItem is-dropdown">
    <a href="#">Contact</a>
    <ul class="Navigation-list is-dropdown is-hidden">
        <li>Johnny</li>
        <li>Julie</li>
        <li>Jamie</li>
    </ul>
  </li>
</ul>

CSS

.Navigation-list {
    display: block;
}

.Navigation-list.is-hidden {
    display: none;
}

JS

$(document).ready(function() {
    $('.Navigation-listItem').click(function() {
      $(this).children('.Navigation-list.is-dropdown').toggleClass('is-hidden');
    });
});

/* Anything that gets to the document
   will hide the dropdown */
$(document).click(function(){
  $(".Navigation-listItem.is-dropdown").addClass('is-hidden');
});

/* Clicks within the dropdown won't make
   it past the dropdown itself */
$(".Navigation-listItem.is-dropdown").click(function(e){
  e.stopPropagation();
});
  • 1
    Ваше выпадающее меню не появляется.
  • 0
    @Gaurav: Извините, в JS произошла орфографическая ошибка
Показать ещё 1 комментарий
Теги:
drop-down-menu

3 ответа

1
Лучший ответ

Рабочий скрипт

Код jQuery

$(document).ready(function () {
    $('.Navigation-listItem').click(function () {
        $(this).children('.Navigation-list.is-dropdown').toggleClass('is-hidden');
    });


    /* Anything that gets to the document
   will hide the dropdown */
    $(document).on('click', function (event) {
        if ($(event.target).closest('#menu').length == false) {
            $(".Navigation-list.is-dropdown").addClass('is-hidden');
        }
    });

    /* Clicks within the dropdown won't make
   it past the dropdown itself */
    $(".Navigation-listItem.is-dropdown ").click(function (e) {
        e.stopPropagation();
    });
});

С помощью этого ответа

  • 0
    Вы можете расширить это, чтобы включить только событие «щелчка», пока вы знаете, что меню должно быть открыто. в противном случае каждый клик проходит через этот обработчик, который, возможно, незначителен, но не идеален
  • 0
    с какой стати вы намеренно делаете «длина == ложь»
Показать ещё 1 комментарий
0

С информацией, которую вы указали, и кодепом, я не вижу, чтобы он работал, но я полагаю, что $ (document).click (функция() для скрыть не будет работать, потому что выпадающее место находится внутри документа, поэтому, когда вы нажимаете на него, он исчезнет. Я рекомендую вам посмотреть это сообщение. Как скрыть/показать выпадающий список содержимого в HTML.

  • 0
    В JS была орфографическая ошибка, я ее исправил.
  • 0
    Я рад слышать это.
Показать ещё 2 комментария
0

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

                       if(dropDownShow.css('display') != 'block'){
                            dropDownShow.css('display', 'block');
                            dropDownShow.css('position', 'absolute');

                        }
                        else{
                            dropDownShow.css('display', 'none');
                        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню