Bootstrap 3.3.7 Как закрыть панель навигации, нажав снаружи? - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть сайт Drupal 8.6.8 с темой Bootstrap 3.3.7

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

(function ($) {
  'use strict';

  $(document).click(function (event) {
    if (!$(event.target).closest('#navbar-collapse-first').length) {
      $('.navbar-collapse-first').collapse('hide');
    }
  });

}(jQuery));

https://css -tricks.com / dangers-stopping-event-пропаганда /

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

Вот код кнопки меню навигации:

<div id="block-togglenavigationfirst" class="contextual-region">

<button type="button" class="navbar-toggle-first collapsed" data-toggle="collapse" data-target="#navbar-collapse-first" aria-expanded="false">

  <div class="icon-navbar-first">
    <span class="fa-layers fa-3x">
      <i class="far fa-circle"></i>
      <span class="navbar-icon-open">
        <i class="fas fa-th-list" data-fa-transform="shrink-8"></i>
      </span>
      <span class="navbar-icon-close">
        <i class="fas fa-times" data-fa-transform="shrink-8"></i>
      </span>
    </span>
  </div>

  <div class="icon-navbar-first-alert icon-navbar-first-alert-disable">
    <span class="fa-layers fa-3x">
      <i class="fas fa-circle"></i>
      <span class="navbar-icon-open">
        <i class="fas fa-th-list fa-inverse" data-fa-transform="shrink-8"></i>
      </span>
      <span class="navbar-icon-close">
        <i class="fas fa-times fa-inverse" data-fa-transform="shrink-8"></i>
      </span>
    </span>
  </div>

</button>

</div>

Вот меню навигации:

<div id="navbar-collapse-first" class="navbar-collapse-first width navbar-collapse-first-fixed-top collapse in" aria-expanded="true" style="">
  <div class="region region-navigation-collapsible-first">
    <nav role="navigation" aria-labelledby="block-useraccountmenu-menu" id="block-useraccountmenu" class="contextual-region">
      <h2 class="sr-only" id="block-useraccountmenu-menu">User account menu</h2>          
      <ul class="menu menu--account nav navbar-nav navbar-right">
        <li class="first last">
          <a href="/fr/unmasquerade" title="Retourner sur votre compte utilisateur.">Cesser de se faire passer pour quelqu'un d'autre</a>
        </li>
      </ul>
    </nav>
  </div>
</div>

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Вы должны проверить, где произошел щелчок.Если щелчок находится за пределами панели навигации, переключите его, иначе не делайте этого.

Ваш код JavaScript станет:

(function ($) {
  'use strict';

   $(document).click(function (event) {
       if (!($(event.target).is('#navbar-collapse-first *'))
           $('.navbar-collapse-first').collapse('hide');
   });

}(jQuery));
0 голосов
/ 10 февраля 2019

Попробуйте использовать это решение от w3schools

https://www.w3schools.com/w3css/tryit.asp?filename=tryw3css_modal_close

...