Mam div z tą klasą:
.news{
width:710px;
float:left;
border-bottom:1px #000000 solid;
font-weight:bold;
display:none;
}
Chciałbym, aby niektóre metody jQuery usunęły to wyświetlanie: none; (aby element div został wyświetlony), a następnie dodaj go ponownie (aby element div był widoczny).
Jak mogę to zrobić? Twoje zdrowie
$(".news").show()
? "więc div będzie cień" ... masz na myśli zanikanie ??$(".news").show()
działa! To samo$(".news").hide()
!!! Dzięki;)$('.news').toggle();
Odpowiedzi:
Aby ukryć
div
lub
i pokazać
div
:lub
źródło
jQuery zapewnia:
Następnie możesz łatwo pokazać i ukryć element (y).
źródło
.show()
że nie usuwadisplay: none
, ale zamiast tego umieszczadisplay: block
lub winline
zależności od elementu i może zepsuć układ, jeśli element używa nietypowegodisplay
stylu.element{display:none;}
w swoim css, ale w swoim js używaj takżeelement.hide()
w tym samym czasie. Umożliwi to działanieshow()
funkcji.Pozwólcie, że podam wam przykładowy kod:
Link będzie wyzwalaczem pokazania elementu div po kliknięciu. Więc twój Javascript będzie:
Prawie zawsze lepiej pozwolić jQuery na stylizację ukrywania i pokazywania elementów.
Edycja: widzę, że osoby powyżej zalecają używanie
.show
i.hide
do tego..toggle
pozwala na jedno i drugie za pomocą jednego efektu. Więc to jest fajne.źródło
toggle
funkcji. Często, jeśli chcesz coś kliknąć i pokazać, chciałbyś, aby funkcja również to ukryła.W JavaScript:
W jQuery:
źródło
Użyj przełącznika, aby pokazać i ukryć.
Sprawdź działający przykład na http://jsfiddle.net/jNqTa/
źródło
.toggle()
jest to przestarzałe od wersji jQuery 1.9.sugerowałbym dodanie klasy do wyświetlania / ukrywania elementów:
a następnie użyj funkcji .toggleClass () jquery, aby pokazać / ukryć element:
źródło
Jedynym sposobem na usunięcie inline "display: none" poprzez css-api jQuery jest zresetowanie go za pomocą pustego ciągu (przy
null
okazji NIE działa !!).Zgodnie z dokumentacją jQuery jest to ogólny sposób na „usunięcie” raz ustawionej właściwości stylu wbudowanego.
$("#mydiv").css("display","");
lub
$("#mydiv").css({display:""});
powinien poprawnie załatwić sprawę.
IMHO w jQuery brakuje metody, którą można by nazwać „odkryć” lub „ujawnić”, która zamiast po prostu ustawić inną właściwość stylu w wierszu, poprawnie ustawia wyświetlaną wartość, jak opisano powyżej. A może
hide()
powinien zapisać początkową wartość wbudowaną ishow()
przywrócić ją ...źródło
Funkcje jQuery .show () i .hide () są prawdopodobnie najlepszym rozwiązaniem.
źródło
Nie podajesz nam zbyt wielu informacji, ale ogólnie może to być rozwiązanie:
źródło
$(".news").show()
i$(".news").hide()
;)Z jakiegoś powodu toggle nie działa dla mnie i otrzymałem błąd
uncaught type error toggle is not a function
podczas sprawdzania elementu w przeglądarce. Więc użyłem następującego kodu i zaczął dla mnie działać.Używany plik skryptu jquery
jquery-2.1.3.min.js
.źródło
Jeśli masz dużo elementów, które chcesz
.hide()
lub.show()
, będziesz marnować dużo zasobów, aby robić to, co chcesz - nawet jeśli używasz.hide(0)
lub.show(0)
- parametr 0 to czas trwania animacji.W przeciwieństwie do Prototype.js
.hide()
i.show()
metod, które były używane tylko do manipulowania atrybutem wyświetlania elementu, implementacja jQuery jest bardziej złożona i nie jest zalecana dla dużej liczby elementów.W takich przypadkach prawdopodobnie powinieneś spróbować
.css('display','none')
ukryć i.css('display','')
pokazać.css('display','block')
należy unikać, zwłaszcza jeśli pracujesz z elementami wbudowanymi, wierszami tabeli (właściwie dowolnymi elementami tabeli) itp.źródło
Biorąc pod uwagę komentarz Lolesque, aby uzyskać najlepszą odpowiedź, możesz dodać atrybut lub klasę, aby pokazać / ukryć elementy o właściwościach wyświetlania, które różnią się od tego, co normalnie ma, jeśli twoja witryna wymaga kompatybilności wstecznej, sugerowałbym utworzenie klasy i dodanie / usunięcie jej, aby pokazać / wyświetl element
Zastąp inline-block preferowaną metodą wyświetlania i użyj jquerys addclass https://api.jquery.com/addclass/ i removeclass https://api.jquery.com/removeclass/ zamiast show / hide, jeśli wstecz kompatybilność nie stanowi problemu, możesz używać takich atrybutów.
I użyj jquerys attr () http://api.jquery.com/attr/ aby pokazać i ukryć element.
Niezależnie od preferowanej metody, możesz łatwo implementować animacje css3 podczas pokazywania / ukrywania elementów w ten sposób
źródło
Używanie
show()
reklamdisplay:block
w miejsce,display:hide
które może zepsuć rzeczy.Aby tego uniknąć, możesz mieć klasę z właściwością
display:none
i przełączać tę klasę dla tego elementu za pomocątoggleClass()
.Żadna z odpowiedzi o tym nie wspomniała.
źródło