Selektor dostarczył mi zestaw elementów. Poza zbiorem elementów mam 1 lub 2 elementy z wyświetlanym atrybutem CSS: brak. Muszę usunąć te elementy i uzyskać elementy, które mają wyświetlacz. Jak to zrobić za pomocą JQuery?Filtrowanie elementów JQuery, które mają styl CSS: brak
Odpowiedz
Można użyć .filter()
.
var displayed = $('mySelector').filter(function() {
var element = $(this);
if(element.css('display') == 'none') {
element.remove();
return false;
}
return true;
});
To zwróci wszystkie elementy ze swoimi ów selektor atrybutu display
nienone
i usunąć tych, którzy są.
Można użyć filter()
var listWithoutDisplayNone = elementList.filter(function(){
if($(this).css('display') != 'none')
return $(this);
});
$("selector").is(":visible")
Można także odfiltrować ukryte elementy w oryginalnym selektora:
$("selector:visible")
Obecnie używam tego dla elementów, które przełączam pomiędzy 'display: none' i' display: block'; czy w tym celu wystąpiłyby jakiekolwiek problemy lub niespójności? – Abdul
@Abdul To powinno być w porządku. jQuery sprawdza zarówno właściwości 'display', jak i' visibility', aby sprawdzić, czy element jest widoczny. – Barmar
Podczas gdy często osiągnie to cel, istnieje jedna istotna różnica (poza tym, że sprawdza również widoczność, jak wspomniano w @Barmar): sprawdzi także widoczność elementów nadrzędnych. Więc jeśli naprawdę chcesz odfiltrować tylko elementy za pomocą 'display: none', to': visible' daje fałszywe alarmy. – ScottSB
- 1. Wybierz wszystkie elementy, które mają określony CSS, używając jQuery
- 2. jQuery wybieranie i filtrowanie elementów wewnątrz elementu
- 3. Utwórz nowy (trwały) styl CSS w jQuery
- 4. Wybieranie wszystkich elementów, które nie mają atrybutu "id"?
- 5. filtrowanie jquery ma + nie
- 6. Filtrowanie elementów w tablicy JavaScript przy użyciu jQuery
- 7. Filtrowanie elementów pustych w strumieniu
- 8. jQuery CSS() dla dynamicznie tworzonych elementów
- 9. Jakikolwiek sposób przekształcić styl bloku/CSS na wbudowany styl CSS?
- 10. Własność CSS pokazuje brak wysokości?
- 11. Styl Elementy napędowe CSS
- 12. Filtrowanie elementów z zestawu w języku Java
- 13. jEdycja wejściowa-box Styl CSS
- 14. Styl koła SVG z CSS
- 15. Obejmij filtrowanie na żywo 1500+ elementów z jQuery w przeglądarce Chrome
- 16. Wtyczka jQuery - wbudowany styl CSS lub zewnętrzny arkusz stylów?
- 17. Jquery: Jak sprawdzić, czy element ma pewną klasę CSS/styl
- 18. jQuery zmienia styl elementu HTML
- 19. Styl jQuery nie jest stosowany w Safari
- 20. Usuń wbudowane elementy CSS elementów HTML
- 21. CSS: styl zastosowany do kombinacji klas?
- 22. Asp.net Kalendarz niestandardowych css styl
- 23. Jak zignorować nadrzędny styl css
- 24. styl JQuery wartość wskazania
- 25. JavaScript: jak zmienić styl CSS tworzonego zakresu?
- 26. Wtyczka walidatora jquery z wyświetlaczem: brak elementów formularza
- 27. Powrót gsutil "brak pasujących elementów"
- 28. Usuń specyficzny styl inline JavaScript | jQuery
- 29. CSS za brak zajęcia
- 30. jquery sprawdza poprawność elementów, które nie zostały jeszcze utworzone
pamiętać, że ta znajdzie tylko elementy, które mają wyraźny 'wyświetlania: none' w ich' atrybutu style'. Metoda '.css()' nie przechwytuje stylów odziedziczonych z arkuszy stylów. – Barmar
Co sprawia, że mówisz to? Zgodnie z dokumentami jQuery, '.css()' jest ** obliczoną ** właściwością stylu, więc zawiera dziedziczone style. Oto wersja demonstracyjna, aby pokazać, że to prawda - https://jsfiddle.net/6uncqqk2/ –
Mogłabym przysiąc, że widziałem pytania z przeszłości, w których nie korzystano z wyliczonego stylu. Być może myślałem o kodzie, który używa zwykłego JS 'element.style.display'. – Barmar