Chociaż na to pytanie udzielano odpowiedzi już wiele razy, pomyślałem, że dodam do niego bardziej kompletną i rzetelną odpowiedź dla przyszłych użytkowników. Główna odpowiedź rozwiązuje problem, ale uważam, że lepiej poznać / zrozumieć niektóre z różnych sposobów pokazywania / ukrywania rzeczy.
.
Zmiana wyświetlania za pomocą css ()
Tak to robiłem, dopóki nie znalazłem innych sposobów.
JavaScript:
$("#element_to_hide").css("display", "none"); // To hide
$("#element_to_hide").css("display", ""); // To unhide
Plusy:
- Ukrywa i odkrywa. O to chodzi.
Cons:
- Jeśli użyjesz atrybutu „display” do czegoś innego, będziesz musiał zakodować wartość tego, co było przed ukryciem. Więc jeśli miałeś „inline”, musiałbyś to zrobić, w
$("#element_to_hid").css("display", "inline");przeciwnym razie domyślnie powróci do „block” lub cokolwiek innego, w co zostanie zmuszony.
- Nadaje się do literówek.
Przykład: https://jsfiddle.net/4chd6e5r/1/
.
Zmiana wyświetlania za pomocą addClass () / removeClass ()
Przygotowując przykład dla tego, faktycznie natknąłem się na pewne wady tej metody, które powodują, że jest ona bardzo zawodna.
Css / JavaScript:
.hidden {display:none}
$("#element_to_hide").addClass("hidden"); // To hide
$("#element_to_hide").removeClass("hidden"); // To unhide
Plusy:
- Ukrywa się… czasami. Zobacz p1 na przykładzie.
- Po odkryciu powróci do korzystania z poprzedniej wyświetlanej wartości ... czasami. Zobacz p1 na przykładzie.
- Jeśli chcesz złapać wszystkie ukryte przedmioty, po prostu musisz to zrobić
$(".hidden").
Cons:
- Nie ukrywa się, jeśli wartość wyświetlana została ustawiona bezpośrednio w html. Zobacz p2 na przykładzie.
- Nie ukrywa się, jeśli wyświetlanie jest ustawione w javascript za pomocą css (). Zobacz p3 na przykładzie.
- Nieco więcej kodu, ponieważ musisz zdefiniować atrybut css.
Przykład: https://jsfiddle.net/476oha8t/8/
.
Zmiana wyświetlania za pomocą przełącznika ()
JavaScript:
$("element_to_hide").toggle(); // To hide and to unhide
Plusy:
- Zawsze działa.
- Pozwala nie martwić się o to, jaki był stan przed zmianą. Oczywistym zastosowaniem tego jest przycisk przełączania ....
- Krótkie i proste.
Cons:
- Jeśli chcesz wiedzieć, w który stan się przełącza, aby zrobić coś niezwiązanego bezpośrednio, musisz dodać więcej kodu (instrukcja if), aby dowiedzieć się, w jakim jest stanie.
- Podobnie jak w poprzednim przypadku, jeśli chcesz uruchomić zestaw instrukcji, które zawierają toggle () w celu ukrycia, ale nie wiesz, czy jest już ukryty, musisz dodać czek (instrukcja if) aby dowiedzieć się najpierw, a jeśli jest już ukryty, pomiń. Zobacz p1 przykładu.
- Powiązane z poprzednimi 2 minusami, używanie toggle () do czegoś, co szczególnie ukrywa lub pokazuje, może być mylące dla innych czytających twój kod, ponieważ nie wiedzą, w jaki sposób będą się przełączać.
Przykład: https://jsfiddle.net/cxcawkyk/1/
.
Zmiana wyświetlania za pomocą hide () / show ()
JavaScript:
$("#element_to_hide").hide(); // To hide
$("#element_to_hide").show(); // To show
Plusy:
- Zawsze działa.
- Po odkryciu powróci do używania poprzedniej wyświetlanej wartości.
- Zawsze będziesz wiedział, w którym stanie się zamieniasz, więc:
- nie trzeba dodawać instrukcji if, aby sprawdzić widoczność przed zmianą stanów, jeśli stan ma znaczenie.
- nie będzie mylić innych czytających Twój kod z tym, do którego stanu się przełączasz, jeśli, jeśli stan ma znaczenie.
- Intuicyjny.
Cons:
- Jeśli chcesz naśladować przełącznik, najpierw musisz sprawdzić stan, a następnie przejść do innego stanu. Zamiast tego użyj do tego przełącznika (). Zobacz p2 przykładu.
Przykład: https://jsfiddle.net/k0ukhmfL/
.
Ogólnie rzecz biorąc, powiedziałbym, że najlepszym rozwiązaniem jest hide () / show (), chyba że jest to specjalnie potrzebne. Mam nadzieję, że te informacje okazały się pomocne.
return falsewonclick?