پرسش

چطور میتونم navbar بوت استرپ رو با کلیک مخفی کنم؟

How to hide collapsible Bootstrap navbar on click?

سلام من یه نوبار با قابلیت باز و بسته شدن با بوت استرپ درست کردم. میخوام وقتی که روی یکی از لینک‌ های منو کلیک میکنم، کل منو بسته بشه. چطور میتونم این کار رو انجام بدم؟

1403/06/01
پاسخ

سلام برای اینکه navbar بوت استرپ رو با کلیک ببندی میتونی از ویژگی‌های جاوا اسکریپت و بوت استرپ استفاده کنی

تو بوت استرپ 5، برای این کار میتونی از data-bs-toggle و data-bs-target استفاده کنی. به‌ علاوه، نیاز به اضافه کردن کد جاوا اسکریپت برای بستن navbar بعد از کلیک روی لینک‌ ها رو داری

<nav class="navbar navbar-expand-lg navbar-light bg-light">
   <a class="navbar-brand" href="#">Navbar</a>
   <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
     <span class="navbar-toggler-icon"></span>
   </button>
   <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
         <li class="nav-item"> <a class="nav-link" href="#">Home</a> </li>
         <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li>
         <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li>
      </ul>
   </div>
</nav>

 برای اضافه کردن جاوا اسکریپتم 

<script>
  document.querySelectorAll('.navbar-nav .nav-link').forEach(link => {
    link.addEventListener('click', () => {
      const navbarToggler = document.querySelector('.navbar-toggler');
      const bsCollapse = new bootstrap.Collapse(document.getElementById('navbarNav'), {
        toggle: false
      });
      bsCollapse.hide();
    });
  });
</script>

کد HTML بالا navbar رو با کلاس‌ های بوت استرپ تنظیم میکنه.

تو کد جاوا اسکریپت، با  querySelectorAll به همه لینک‌ های نوار navbar دسترسی پیدا میکنیم. بعد برای هر لینک یه Event Listener اضافه میکنیم که با کلیک، navbar رو میبنده bootstrap.Collapse با hide()نوبار رو مخفی می‌کنه.

پاسخ: 1403/06/01
آخرین آپدیت: 1403/07/23