Saya memiliki navigasi standar yang kurang lebih dari bootstrap 3
<body data-spy="scroll" data-target=".navbar-collapse">
<!-- ---------- Navigation ---------- -->
<div class="navbar navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
</button>
<a class="navbar-brand" href="index.html"> <img src="#"></a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="#home">Home</a></li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<li><a href="#four">Four</a></li>
</ul>
</div>
</div>
</div>
Biasanya runtuh pada perangkat yang lebih kecil. Mengklik tombol menu akan memperluas menu, tetapi jika saya mengklik (atau menyentuh) pada link menu, menu tetap terbuka. Apa yang harus saya lakukan, menutupnya lagi?
html
css
twitter-bootstrap
navigation
Paranoia
sumber
sumber
Jawaban:
Pengaturan default Bootstrap adalah untuk membuat menu tetap terbuka saat Anda mengklik item menu. Anda dapat mengganti perilaku ini secara manual dengan memanggil
.collapse('hide');
elemen jQuery yang ingin Anda tutup.sumber
Hanya untuk membagikan ini dari solusi di GitHub, ini adalah jawaban yang populer:
https://github.com/twbs/bootstrap/issues/9013#issuecomment-39698247
Ini dihubungkan ke dokumen, jadi Anda tidak perlu melakukannya di ready () (Anda dapat secara dinamis menambahkan tautan ke menu Anda dan itu akan tetap berfungsi), dan itu hanya dipanggil jika menu sudah diperluas. Beberapa orang telah melaporkan berkedip aneh di mana menu terbuka dan kemudian segera ditutup dengan kode lain yang tidak memverifikasi bahwa menu tersebut memiliki kelas "dalam".
[UPDATE 2014-11-04] ternyata jika menggunakan sub menu, hal di atas dapat menimbulkan masalah, sehingga hal di atas diubah menjadi:
sumber
collapse
merupakan metode yang ditentukan oleh bootstrap dan dilampirkan ke objek jQuery ... mungkin, mereka menggunakan kembali ini untuk berbagai tujuan (akordeon, navbar, dll): getbootstrap.com/javascript / # collapse-usageUbah ini:
untuk ini:
Perubahan sederhana ini berhasil bagi saya.
Ref: https://github.com/twbs/bootstrap/issues/9013
sumber
.in
ke akhirdata-target
nilai:data-target=".navbar-collapse.in"
. Dari komentar dalam jawaban ini: stackoverflow.com/a/21797534/89818Saya memiliki masalah yang sama tetapi disebabkan oleh memasukkan dua kali
bootstrap.js
danjquery.js
file.Dengan satu klik, acara tersebut diproses dua kali oleh kedua instance jquery. Satu menutup dan satu membuka sakelar.
sumber
Ini akan membantu dalam menangani drop down di bilah navigasi
sumber
Saya mengalami / memiliki masalah serupa dengan Bootstrap 4, alpha-6, dan jawaban Joakim Johansson di atas membawa saya ke arah yang benar. Tidak perlu javascript. Menempatkan data-target = ". Navbar-collapse" dan data-toggle = "collapse" ke dalam tag div di dalam nav, tetapi mengelilingi tautan / tombol, berhasil bagi saya.
sumber
Saya tahu pertanyaan ini untuk Bootstrap 3 tetapi jika Anda mencari solusi untuk Bootstrap 4 , lakukan saja ini:
sumber
$(".navbar-nav li a:not('.dropdown-toggle')") .on('click', function () { $('.navbar-collapse').collapse('hide'); }
Saya memiliki masalah yang sama, saya menggunakan
jQuery-1.7.1
danbootstrap 3.2.0
. Saya mengubah versi jQuery saya ke versi terbaru (jquery-1.11.2
) dan semuanya berfungsi dengan baik.sumber
aku melakukannya
sumber
Meskipun solusi yang diposting sebelumnya untuk mengubah item menu itu sendiri, seperti di bawah, berfungsi saat menu ada di perangkat kecil, ini memiliki efek samping saat menu dalam lebar penuh dan diperluas, ini dapat mengakibatkan scrollbar horizontal bergeser di atas Anda. item menu . Solusi javascript tidak memiliki efek samping ini.
(maaf untuk menjawab seperti ini, ingin menambahkan komentar ke jawaban itu, tapi, sepertinya saya belum cukup kredit untuk berkomentar)
sumber
sumber
Jika Anda ingin mengganti perilaku ini secara manual dengan memanggil .collapse ('hide') dalam arahan angular, berikut kodenya:
file javascript:
Html:
sumber
Pastikan Anda menggunakan versi bootstrap js terbaru. Saya menghadapi masalah yang sama dan baru saja memutakhirkan file bootstrap.js dari bootstrap-3.3.6 sudah melakukan keajaiban.
sumber
Jika Anda hanya ingin navigasi Anda beralih saat digunakan di layar seluler, menambahkan
data-toggle="collapse"
dandata-target="#navbar"
ke elemen a saja akan berfungsi di layar seluler, tetapi akan memberi Anda kedipan aneh saat diklik di layar desktop. Solusi jQuery tidak berfungsi dengan baik jika Anda berada di lingkungan Aurelia atau Angular.Solusi terbaik bagi saya adalah membuat atribut khusus yang mendengarkan kueri media yang sesuai dan menambahkan
data-toggle="collapse"
atribut jika diinginkan:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
Atribut khusus Aurelia terlihat seperti ini:
sumber
Saya menemukan bahwa setelah banyak perjuangan, coba-coba, solusi terbaik untuk saya di jsfiddle. Tautan ke inspirasi di jsfiddle.net . Saya menggunakan bootstrap navbar navbar-fixed-top dengan tombol collapse dan hamburger. Ini adalah versi saya di jsfiddle: jsfiddle Scrollspy navbar . Saya hanya mendapatkan fungsionalitas dasar menggunakan petunjuk di getbootsrap.com. Bagi saya, masalahnya sebagian besar pada arah yang tidak jelas dan direkomendasikan oleh situs getbootstrap. Bagian terbaiknya adalah menambahkan sedikit tambahan js ini (yang memang mencakup beberapa dari apa yang disebutkan di utas di atas) memecahkan beberapa masalah Scrollspy untuk saya termasuk:
CATATAN: Dalam kode js yang ditunjukkan di bawah ini (dari tautan jsfiddle kedua di posting saya):
topMenu = $ ("# myScrollspy"),
... nilai "myScrollspy" harus cocok dengan id = "" di HTML Anda seperti ...
Tentu saja Anda dapat mengubah nilai itu menjadi nilai apa pun yang Anda suka.
sumber
Yang Anda butuhkan hanyalah data-target = ". Navbar-collapse" di tombol, tidak ada yang lain.
sumber
<a/>
tetapi tidak berhasil<NavLink/>
, runtuh tetapi,<NavLink/>
tidak berfungsi lagi, ada ide mengapa?Ini adalah kode yang berhasil untuk saya:
sumber
Saya memiliki masalah yang sama, pastikan bootstrap.js disertakan dalam halaman html Anda. Dalam kasus saya, menu terbuka tetapi tidak menutup. Segera setelah saya menyertakan file bootstrap js, semuanya langsung bekerja.
sumber
Sederhana Cobalah untuk membuat fungsi dalam javascript untuk kelas runtuh dropdown.
Contoh:
JS :
Hubungkan fungsi ini dengan
onClick
karya sederhana untuk saya.sumber
Saya memiliki masalah serupa tetapi masalah saya tidak akan tetap terbuka itu akan membuka / menutup dengan cepat, saya menemukan bahwa saya memuat jquery-1.11.1.min.js sebelum bootstrap.min.js. Jadi saya membalik urutan 2 file itu dan memperbaiki menu saya. Berjalan dengan sempurna sekarang. Semoga membantu
sumber
Masalahnya mungkin Anda menggunakan versi lama dari bootstrap atau jquery, ATAU Anda memanggil lebih dari satu versi dalam markup Anda.
Simpan saja versi terbaru, Anda hanya perlu satu referensi. Memecahkan masalah.
sumber
Anda mungkin ingin memastikan bahwa Anda memuat ATF jQuery dan Bootstrap.min.js Anda. Navigasi Anda adalah hal pertama yang dirender pada halaman, jadi jika Anda memiliki skrip di bagian bawah HTML, Anda kehilangan fungsionalitas JavaScript.
sumber
Saya memiliki masalah yang sama hanya di seluler tetapi untuk aplikasi Angular dan inilah yang saya lakukan:
app.component.html
app.component.ts
Semoga membantu :)
sumber
Menu saya bukan standar navbar, tetapi saya berhasil menutup menu saya secara otomatis, menggunakan fungsi "onclick" dan ".click ()".
sumber