Saya menggunakan Twitter Bootstrap dan "tab" -nya.
Saya memiliki kode berikut:
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#add">add</a></li>
<li><a data-toggle="tab" href="#edit" >edit</a></li>
<li><a data-toggle="tab" href="#delete" >delete</a></li>
</ul>
Tab bekerja dengan baik, tetapi di URL tidak ditambahkan #add, #edit, #delete.
Saat saya menghapus data-toggle
URL berubah, tetapi tab tidak berfungsi.
Ada solusi untuk ini?
jquery
twitter-bootstrap
Ivanka Todorova
sumber
sumber
Jawaban:
Coba kode ini. Itu menambahkan tab href ke url + membuka tab berdasarkan hash pada pemuatan halaman:
sumber
&&
Artinya,AND
jika kiri yang sama dengan benar (hash
bukan 0, nol atau kosong) dan kanan sama dengan benar maka lakukan sesuatu, namun baris diakhiri dengan;
jadi tidak ada yang harus dilakukan sebelumnya;
dan tidak masalah jika a tab ditampilkan atau tidak dan tidak peduli apa yang.tab('show')
dikembalikan, itu akan tetap mencoba. Saat mengevaluasi logika dengan cara ini, jika bagian pertama dari persamaan (sebelum&&
) salah, Anda tidak perlu melanjutkan evaluasi, sehingga tab tidak akan ditampilkan. Anda dapat mencapai efek yang sama seperti ini:if(hash){ $('ul.nav a[href="' + hash + '"]').tab('show'); }
a && b;
berarti cobaa
dan hanya jika itu benar, cobab
. String bernilai true jika tidak kosong.Ada tiga komponen yang diperlukan untuk solusi lengkap:
Saya pikir tidak ada komentar di sini, atau jawaban yang diterima, menangani semua skenario ini.
Karena ada cukup banyak yang terlibat, saya pikir ini paling rapi sebagai plugin jQuery kecil: https://github.com/aidanlister/jquery-stickytabs
Anda dapat memanggil plugin seperti ini:
Saya telah membuat entri blog untuk ini, http://aidanlister.com/2014/03/persisting-the-tab-state-in-bootstrap/
sumber
Menggunakan
data-toggle="tab"
meminta plugin untuk menangani tab, yang saat melakukannya akan memanggilpreventDefault
acara ( kode di github ).Anda dapat menggunakan aktivasi tab Anda sendiri, dan membiarkan acara berjalan:
Dan Anda harus menghapus atribut tersebut
data-toggle="tab"
Periksa dokumennya jika Anda ragu.
sumber
Karena elemen jangkar Anda sudah mengubah hash url, mendengarkan acara onhashchange adalah pilihan bagus lainnya. Seperti yang telah disebutkan @flori, metode ini berfungsi dengan baik dengan tombol kembali di browser.
Terakhir, memicu acara tepat setelah Anda menentukan pendengar juga akan membantu menampilkan tab yang tepat saat pemuatan halaman.
sumber
Solusi saya untuk masalah Anda:
Pertama tambahkan
data-value
atribut baru ke setiapa
tautan, seperti ini:Kedua, ubah id tab, misalnya dari
add
menjaditab-add
, juga perbarui href untuk menyertakantab-
awalan:Dan akhirnya kode js:
Ini adalah jsFiddle - tetapi tidak berfungsi karena iframe digunakan oleh jsFiddle, tetapi Anda dapat membaca sumber solusi saya.
sumber
Masalah yang sama dengan CakePHP dengan Tab Bootstrap 3, ditambah lagi ketika saya mengirim dengan URL eksternal dan jangkar, ia melompat ke bagian kehilangan menu saya, setelah meninjau banyak solusi membuat ini ...
terima kasih kepada: http://ck.kennt-wayne.de/2012/dec/twitter-bootstrap-how-to-fix-tabs
sumber
Ada juga cara sederhana untuk bereaksi pada perubahan hash (misalnya tombol kembali). Cukup tambahkan event listener hashchange ke solusi tomaszbak:
sumber
Saya menggunakan Bootstrap 3.3. * Dan tidak ada solusi di atas yang membantu saya, bahkan ditandai sebagai jawaban satu. Saya baru saja menambahkan skrip di bawah ini dan bekerja.
Semoga ini bisa membantu Anda.
sumber
Paling sederhana, dengan asumsi Anda menggunakan
data-toggle="tab"
sintaks terdokumentasi yang dijelaskan di sini :sumber
Bagi mereka yang menggunakan Ruby on Rails atau skrip sisi server lainnya, Anda akan ingin menggunakan
anchor
opsi di jalur. Ini karena setelah halaman dimuat, hash URL-nya tidak tersedia. Anda akan ingin memberikan tab yang benar melalui tautan atau pengiriman formulir Anda.Jika Anda menggunakan awalan untuk mencegah jendela melompat ke id:
Kemudian Anda CoffeeScript:
Atau JavaScript:
Ini harus bekerja di Bootstrap 3.
sumber
Terima kasih kepada @tomaszbak untuk solusi aslinya namun karena suntingan saya ditolak dan saya tidak dapat mengomentari kirimannya, saya akan meninggalkan versi saya yang sedikit lebih baik dan lebih mudah dibaca di sini.
Itu pada dasarnya melakukan hal yang sama tetapi jika memperbaiki masalah kompatibilitas lintas browser yang saya miliki dengannya.
sumber
Berikut adalah opsi yang digunakan
history.pushState
sehingga Anda dapat menggunakan riwayat browser Anda untuk kembali ke tab sebelumnyasumber
Tak satu pun di atas berhasil untuk saya, jadi inilah cara saya membuat saya bekerja:
class="tab-link"
ke semua tautan yang membutuhkan fungsi inisumber
Saya mengerti bahwa OP mengatakan menggunakan JQuery tetapi Anda cukup menggunakan vanilla JS untuk melakukan itu:
sumber
Ini juga memperbaiki tab yang sangat tidak jelas a href yang tidak aktif saat menggunakan jquery dan bootstrap
sumber