Załóżmy, że tworzę taki element HTML,
<div id="my-div" class="hidden">Hello, TB3</div>
<div id="my-div" class="hide">Hello, TB4</div>
<div id="my-div" class="d-none">Hello, TB4</div>
Jak mogę pokazać i ukryć ten element HTML przed jQuery / Javascript.
JavaScript:
$(function(){
$("#my-div").show();
});
Wynik: (z dowolnym z nich).
Chciałbym, aby powyższe elementy były ukryte.
Jaki jest najprostszy sposób na ukrycie elementu za pomocą Bootstrap i pokazanie go za pomocą jQuery?
javascript
jquery
html
css
twitter-bootstrap
psylossy
źródło
źródło
Odpowiedzi:
Prawidłowa odpowiedź
Bootstrap 4.x
Bootstrap 4.x używa nowej
.d-none
klasy . Zamiast używać jednego z nich.hidden
lub.hide
jeśli używasz Bootstrap 4.x, użyj.d-none
.$("#myId").removeClass('d-none');
$("#myId").addClass('d-none');
$("#myId").toggleClass('d-none');
(dzięki komentarzowi Fangminga)
Bootstrap 3.x
Po pierwsze, nie używaj
.hide
! Zastosowanie.hidden
. Jak powiedzieli inni,.hide
jest przestarzałe,Po drugie, użyj .toggleClass () , .addClass () i .removeClass jQuery'ego
$("#myId").removeClass('hidden');
$("#myId").addClass('hidden');
$("#myId").toggleClass('hidden');
Nie używaj klasy css
.show
, ma ona bardzo mały przypadek użycia. Definicjeshow
,hidden
iinvisible
są w docs .źródło
fadeIn()
). Dlatego użyj klasycollapse
zamiasthidden
. I wtedy oczywiście nie ma potrzeby korzystaniaremoveClass
,addClass
itp.hidden-xs-up
. v4-alpha.getbootstrap.com/layout/responsive-utilities/… Istnieje równieżhidden
atrybut HTML5. v4-alpha.getbootstrap.com/content/reboot/….hide()
nie jest.hide
klasą bootstrap . Metoda jQuery działa dobrze, ale nie jest to metoda ładowania początkowego. Biblioteki bootstrap zależą od włączenia klasy .hidden do elementu, aby ustalić, że go nie ma. jQuery tego nie dodaje - chyba że włamiesz się tak jak tutaj: stackoverflow.com/a/27439371/124486 , w którym to przypadku możesz złamać inne rzeczy specyficzne dla jQuery.Po prostu:
Lub jeśli chcesz, aby klasa nadal tam była:
źródło
Użyj bootstrap .collapse zamiast .hidden
Później w JQuery możesz użyć .show () lub .hide () do manipulowania nim
źródło
To rozwiązanie jest przestarzałe. Skorzystaj z najlepiej głosowanego rozwiązania.
hide
Klasa jest przydatna, aby utrzymać zawartość ukryty na stronie obciążenia.Moim rozwiązaniem jest to podczas inicjalizacji, przejdź do hide jquery's:
Wtedy
show()
ihide()
powinien działać normalnie.źródło
Innym sposobem zaradzenia tej irytacji jest utworzenie własnej klasy CSS, która nie ustawia! Ważnego na końcu reguły, na przykład:
i używane w ten sposób:
a teraz działa ukrywanie jQuery
źródło
.hidden { display: none !important; visibility: hidden !important; }
Przedstawiona metoda @ dustin-graham jest taka, jak ja to robię. Pamiętaj również, że bootstrap 3 używa teraz „ukryty” zamiast „ukryć”, zgodnie z ich dokumentacją w getbootstrap . Zrobiłbym więc coś takiego:
Za każdym razem, gdy użyjesz jQuery
show()
ihide()
metod, nie będzie konfliktu.źródło
hidden
klasy, a potem spróbowałem zrobićshow()
w jQuery i nic by się nie wydarzyło. Twoje rozwiązanie rozwiązuje to tak łatwo i nie pomyślałem o tym.Zainicjuj element za pomocą:
A następnie użyj zdarzenia, które chcesz pokazać, jako takie:
Uważam, że to najprostsza droga.
źródło
HTML:
JavaScript:
źródło
Lubię używać toggleClass:
źródło
switch
nie jest to całkowicie potrzebne.// nie musisz nawet ustawiać
#my-div
.hide
nor!important
, wystarczy wkleić / powtórzyć przełącznik w funkcji zdarzenia.źródło
Ostatnio natknąłem się na to podczas aktualizacji z 2.3 do 3.1; nasze animacje jQuery ( slideDown ) zepsuły się, ponieważ ukrywaliśmy elementy w szablonie strony. Poszliśmy drogą tworzenia rozstawionych w nazwach wersji klas Bootstrap, które teraz noszą brzydką ! Ważną zasadę.
źródło
Odpowiedź Razza jest dobra, jeśli chcesz przepisać to, co zrobiłeś.
Miał ten sam problem i opracował następujące rozwiązania:
Wyrzuć go, gdy Bootstrap zawiera naprawę tego problemu.
źródło
.removeClass()
czy.addClass()
?.removeClass()
działa już na zestawie? Nie możesz po prostu zadzwonić$(this).removeClass('show')
W bootstrap 4 możesz użyć
d-none
klasy, aby całkowicie ukryć element. https://getbootstrap.com/docs/4.0/utilities/display/źródło
Aktualizacja : Od teraz używam
.collapse
i$('.collapse').show()
.Dla Bootstrap 4 Alpha 6
W przypadku Bootstrap 4 musisz użyć
.hidden-xs-up
.https://v4-alpha.getbootstrap.com/layout/responsive-utilities/#available-classes
Istnieje również
hidden
atrybut HTML5.https://v4-alpha.getbootstrap.com/content/reboot/#html5-hidden-attribute
Istnieje również to,
.invisible
co wpływa na układ.https://v4-alpha.getbootstrap.com/utilities/invisible-content/
źródło
Ukryj i ukryte są zarówno przestarzałe, jak i później usunięte, nie istnieją już w nowych wersjach. W zależności od potrzeb możesz użyć klas d-none / d-sm-none / invisible itp. Prawdopodobnym powodem ich usunięcia jest to, że ukrywanie / ukrywanie jest nieco mylące w kontekście CSS. W CSS ukrywanie (ukrywanie) służy do widoczności, a nie do wyświetlania. widoczność i wyświetlanie to różne rzeczy.
Jeśli potrzebujesz klasy widoczności: ukryta, potrzebujesz niewidocznej klasy z narzędzi widoczności.
Sprawdź poniżej zarówno widoczność, jak i narzędzia wyświetlania:
https://getbootstrap.com/docs/4.1/utilities/visibility/
https://getbootstrap.com/docs/4.1/utilities/display/
źródło
Użyj następującego fragmentu kodu w przypadku Bootstrap 4, który rozszerza jQuery:
Dołącz plik po dołączeniu jQuery.
Użyj go, używając składni
$ (). hideShow ('hide');
$ (). hideShow ('show');
mam nadzieję, że uznasz to za pomocne. :-)
źródło
Bootstrap, JQuery, przestrzenie nazw ... Co jest nie tak z prostym:
Możesz stworzyć małą funkcję pomocniczą, zgodną z KISS:
źródło
W oparciu o powyższe odpowiedzi właśnie dodałem własne funkcje, co nie koliduje z dostępnymi funkcjami jquery, takimi jak .hide (), .show (), .toggle (). Mam nadzieję, że to pomoże.
źródło
Rozwiązałem problem, edytując plik CSS Bootstrap, zobacz ich dokument:
.ukryć:
.hidden jest tym, czego powinniśmy używać teraz, ale tak naprawdę:
„FadeIn” jQuery nie będzie działać z powodu „widoczności”.
Tak więc w najnowszym Bootstrapie .hide nie jest już używany, ale nadal znajduje się w pliku min.css. więc opuściłem .hidden AS IS i po prostu usunąłem „! important” z klasy „.hide” (która i tak powinna być przestarzała). ale możesz też zastąpić go w swoim własnym CSS, chciałem tylko, aby cała moja aplikacja działała tak samo, więc zmieniłem plik CSS Bootstrap.
A teraz działa jQuery „fadeIn ()”.
Powodem, dla którego to zrobiłem w porównaniu z powyższymi sugestiami, jest to, że kiedy „removeClass („. Hide ”)” obiekt jest natychmiast wyświetlany, a ty pomijasz animację :)
Mam nadzieję, że pomogło to innym.
źródło
☀️ Jaśniejsza odpowiedź
W Bootstrap 4 ukrywasz element:
🛑 Oczywiście możesz to dosłownie pokazać za pomocą:
💓 Ale jeśli zrobisz to semantycznie, przenosząc odpowiedzialność z Bootstrap na jQuery, możesz użyć innych subtelności jQuery, takich jak zanikanie:
źródło
Twitter Bootstrap zapewnia klasy do przełączania treści, patrz https://github.com/twbs/bootstrap/blob/3ee5542c990817324f0a07b97d01d1fe206fd8d6/less/utilities.less .
Jestem zupełnie nowy w jQuery, a po przeczytaniu ich dokumentacji znalazłem inne rozwiązanie, aby połączyć Twitter Bootstrap + jQuery.
Po pierwsze, rozwiązaniem „ukrywania” i „pokazywania” elementu (klasa wsis-collapse) po kliknięciu innego elementu (klasa wsis-toggle) jest użycie .toggle .
Element
.wsis-collapse
został już ukryty za pomocą klasy Twitter Bootstrap (V3).hidden
również:Po kliknięciu
.wsis-toggle
jQuery dodaje styl wbudowany:Ze względu na
!important
Twitter Bootstrap ten wbudowany styl nie ma żadnego efektu, więc musimy usunąć.hidden
klasę, ale nie polecam.removeClass
tego! Ponieważ gdy jQuery znowu coś ukryje, dodaje również styl wbudowany:To nie to samo co .hidden klasa Twitter Bootstrap, który jest zoptymalizowany również dla AT (czytników ekranu). Tak więc, jeśli chcemy pokazać ukryty div, musimy pozbyć się
.hidden
klasy Bootstrap na Twitterze, więc pozbywamy się ważnych instrukcji, ale jeśli ponownie to ukryjemy, chcemy.hidden
ponownie odzyskać klasę! Możemy do tego użyć [.toggleClass] [3].W ten sposób używasz ukrytej klasy za każdym razem, gdy treść jest ukryta.
.show
Klasa w TB jest właściwie taka sama jak styl wbudowany w jQuery, zarówno'display: block'
. Ale jeśli.show
klasa w którymś momencie będzie inna, po prostu dodaj również tę klasę:źródło