Saya menggunakan Twitter Bootstrap dan saya perhatikan bahwa jQuery show()
atau fadeIn()
tidak membuat elemen DOM yang ditandai dengan kelas hidden
muncul karena fungsi jQuery hanya menghapus display: none
spesifikasinya. Namun, visibility
masih disetel ke hidden
.
Saya bertanya-tanya apa cara terbaik untuk mengatasi ini?
- Hapus
hidden
kelas pada elemen tersebut - Ubah properti visibilitas
- Timpa kelas tersembunyi di css saya sendiri
Secara khusus, saya ingin tahu apakah memperbaiki ini dengan jQuery atau css lebih baik dan mengapa.
jquery
twitter-bootstrap
Lim H.
sumber
sumber
visibility: hidden
adalah dari bootstrap responsif.Jawaban:
Kelas css yang Anda cari adalah
.collapse
. Ini mengatur elemen kedisplay: none;
Jadi penggunaan
$('#myelement').show()
akan bekerja dengan baik.UPDATE: Bootstrap v3.3.6 telah memperbarui .collapse kembali ke:
.collapse { display: none; }
sumber
.slideDown()
,,.fadeIn()
dll..hidden
Di Bootstrap adalah untuk hal-hal yang tidak ingin Anda tampilkan..collapse
sekarang juga ditetapkanvisibility: hidden;
Ini akan memudarkan elemen tak terlihat Anda dan menghapus kelas
$('#element.hidden').css('visibility','visible').hide().fadeIn().removeClass('hidden');
http://jsfiddle.net/7qxVL/
Jika Anda tidak benar-benar membutuhkan elemen untuk menjadi tidak terlihat (yaitu mengambil ruang), Anda mungkin ingin mendefinisikan ulang .hidden (di css lokal Anda, jangan ubah sumber bootstrap, atau bahkan lebih baik, di file LESS lokal Anda).
sumber
.hidden
untuk elemen yang ingin Anda tampilkan menggunakan javascript. Gunakan.collapse
sebagai gantinya.Peringatan:
bootstrap 3.3.0 baru saja mengubah .collapse menjadi:
.collapse { display: none; visibility: hidden; }
Yang merupakan perubahan besar untuk jQuery.show (), saya harus kembali ke sebaris:
<div class="alert alert-danger" style="display:none;" > </div>
untuk terus menggunakan jQuery sebagai berikut:
$('.alert').html("Change a few things up and try submitting again.").show()
Satu-satunya kelas yang bisa saya temukan di bootstrap 3.3.0 untuk menerapkan hanya 'display: none' is
.navbar { display: none; }
sumber
.collapse('hide')
dan.collapse('show')
bukan metode jQuery. Anda dapat mengatur visibilitas awal langsung di HTML melalui kelascollapse
(menyembunyikan) ataucollapse in
(menampilkan). Lihat getbootstrap.com/javascript/#collapse .Saya memiliki masalah yang sama. Saya menggunakan tambalan ini:
$(function() { $('.hidden').hide().removeClass('hidden'); });
Kemudian saya mengalami masalah lain, karena aplikasi saya menghasilkan elemen baru dan menambahkan / menambahkannya. Apa yang akhirnya saya lakukan adalah setelah membuat elemen baru yang saya lakukan:
var newEl = ...; $(newEl).find('.hidden').hide().removeClass('hidden');
sumber
Bagi saya itu karena bootstrap menggunakan
!important
hack untuk menyembunyikan dan menyembunyikan kelas.Jadi Anda tidak bisa menggunakan
show()
metode dll yang disediakan dengan jquery. Sebaliknya Anda harus menimpa kode yang lebih mengerikan yang menimpa kode hacky.$('#myelement').attr('style', 'display: block !important');
! important adalah pilihan terakhir dan tidak boleh digunakan di pustaka inti seperti bootstrap.
sumber
Ini berhasil, tetapi saya akan mencoba jawaban pertama dan mengubah kelas menjadi
.collapse
..toggleClass('hidden')
sumber