Używam Twitter Bootstrap i zauważam, że jQuery show()
lub fadeIn()
nie powoduje hidden
pojawienia się elementu DOM oznaczonego klasą, ponieważ funkcje jQuery tylko usuwają display: none
specyfikację. Jednak visibility
nadal jest ustawiony na hidden
.
Zastanawiam się, jaki jest najlepszy możliwy sposób obejścia tego problemu?
- Usuń
hidden
klasę z elementu - Zmień właściwość widoczności
- Zastąp ukrytą klasę w moim własnym CSS
W szczególności chcę wiedzieć, czy naprawienie tego za pomocą jQuery lub css jest lepsze i dlaczego.
jquery
twitter-bootstrap
Lim H.
źródło
źródło
visibility: hidden
jest responsywny z bootstrap.Odpowiedzi:
Klasa CSS, której szukasz, to
.collapse
. To ustawia element nadisplay: none;
Więc używanie
$('#myelement').show()
będzie działać poprawnie.AKTUALIZACJA: Bootstrap 3.3.6 zaktualizował .collapse z powrotem do:
.collapse { display: none; }
źródło
.slideDown()
,.fadeIn()
itp.hidden
w Bootstrap jest na rzeczy nigdy nie ma być wyświetlany..collapse
teraz również ustawiavisibility: hidden;
Spowoduje to zanikanie niewidocznego elementu i usunięcie klasy
$('#element.hidden').css('visibility','visible').hide().fadeIn().removeClass('hidden');
http://jsfiddle.net/7qxVL/
Jeśli naprawdę nie potrzebujesz, aby element był niewidoczny (tj. Zajmował miejsce), możesz przedefiniować .hidden (w swoim lokalnym css, nie zmieniaj źródła bootstrap, a nawet lepiej, w lokalnym pliku LESS).
źródło
.hidden
dla elementów, które chcesz wyświetlić za pomocą javascript. Użyj.collapse
zamiast tego.Ostrzeżenie:
bootstrap 3.3.0 właśnie zmienił .collapse to:
.collapse { display: none; visibility: hidden; }
Co jest przełomową zmianą dla jQuery.show (), musiałem wrócić do inliningu:
<div class="alert alert-danger" style="display:none;" > </div>
aby kontynuować używanie jQuery w następujący sposób:
$('.alert').html("Change a few things up and try submitting again.").show()
Jedyną klasą, jaką udało mi się znaleźć w bootstrap 3.3.0, aby zastosować tylko „display: none”, jest
.navbar { display: none; }
źródło
.collapse('hide')
i.collapse('show')
. Możesz ustawić początkową widoczność bezpośrednio w kodzie HTML za pośrednictwem klasycollapse
(do ukrycia) lubcollapse in
(do pokazania). Zobacz getbootstrap.com/javascript/#collapse .Miałem ten sam problem. Użyłem tej poprawki:
$(function() { $('.hidden').hide().removeClass('hidden'); });
Wtedy miałem inny problem, ponieważ moja aplikacja generuje nowe elementy i dołącza je / dołącza. W końcu zrobiłem po wygenerowaniu nowego elementu, który robię:
var newEl = ...; $(newEl).find('.hidden').hide().removeClass('hidden');
źródło
Dla mnie to dlatego, że bootstrap używa
!important
hacka zarówno do ukrywania, jak i ukrywania klasy.Nie możesz więc używać
show()
metod etc dostarczonych z jquery. Zamiast tego musisz nadpisać jeszcze bardziej okropny kod, nadpisując zhackowany kod.$('#myelement').attr('style', 'display: block !important');
! ważne jest opcją ostatniej szansy i naprawdę nie powinno być używane w podstawowej bibliotece, takiej jak bootstrap.
źródło
To działa, ale spróbuję pierwszej odpowiedzi i zmienię klasy na
.collapse
..toggleClass('hidden')
źródło