Za pomocą jQuery programowo generuję kilka div
takich:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Gdzie indziej w moim kodzie muszę sprawdzić, czy te DIV istnieją. Nazwa klasy dla div jest taka sama, ale ID zmienia się dla każdego div. Masz pomysł, jak je wykryć za pomocą jQuery?
:first
na nie pomogłoby wydajność (nie wiem, czy wydajność jest ważnym kryterium @itgorilla), ale czy to nie zmienia się gwałtownie przez przeglądarkę, przypuszczalnie dlatego, że zmienia natywne funkcje jQuery można użyć, aby wykonać wybór. Oto przypadek testowy, w którym div istnieje , a tutaj taki, w którym nie istnieje .if (!$(".mydivclass")[0]){ /* do stuff */ }
Możesz użyć
size()
, ale jQuery zaleca użycie długości, aby uniknąć narzutu wywołania innej funkcji:Więc:
http://api.jquery.com/size/
http://api.jquery.com/length/
AKTUALIZACJA
Wybrana odpowiedź korzysta z testu perf, ale jest nieco wadliwa, ponieważ obejmuje również wybór elementu jako część perf, co nie jest tutaj testowane. Oto zaktualizowany test perf:
http://jsperf.com/check-if-div-exists/3
Moje pierwsze uruchomienie testu pokazuje, że pobieranie właściwości jest szybsze niż pobieranie indeksu, chociaż IMO jest dość znikome. Nadal wolę używać długości, ponieważ bardziej sensowne jest przeznaczenie kodu zamiast bardziej zwięzłego warunku.
źródło
.length
obecnie oferuje najlepszą średnią wydajność.Bez jQuery:
Natywny JavaScript zawsze będzie szybszy. W takim przypadku: (przykład)
Jeśli chcesz sprawdzić, czy element nadrzędny zawiera inny element z określoną klasą, możesz użyć jednego z poniższych. (przykład)
Alternatywnie możesz użyć
.contains()
metody na elemencie nadrzędnym. (przykład).. i wreszcie, jeśli chcesz sprawdzić, czy dany element zawiera tylko określoną klasę, użyj:
źródło
źródło
div
elementów na stronie, a następnie wrócić i przeglądaj je, aby sprawdzić, czy mają tę klasę, aby wyrzucić tablicę na końcu).hasClass
jest o 33% szybszy niż inne selektory tutaj. Sprawdź jsperf.com/hasclass00div
elementy), który omija sam problem, który podkreśliłem (budowanie tablicy). Wypróbuj z kilkoma programami div: jsperf.com/hasclass00/2 Jest o 63% wolniej na mojej kopii Chrome, 43% wolniej na mojej kopii Firefox, 98% (!) Wolniej na Opera. Co więcej, sensowne jest , że wolniej jest budować listę div, a następnie przeszukiwać ją, niż dać silnikowi selekcji wszystkie potrzebne informacje.Oto rozwiązanie bez użycia Jquery
link referencyjny
źródło
To całkiem proste ...
źródło
Aby
div
jawnie przetestować elementy:if( $('div.mydivclass').length ){...}
źródło
.mydivclass
zależności od wersji przeglądarki i jQuery.div
część selektora.Prosty kod podano poniżej:
Aby ukryć div z identyfikatorem szczegółu:
źródło
Oto kilka sposobów:
Możemy użyć dowolnego z opisanych powyżej sposobów w zależności od wymagań.
źródło
size()
Metoda tylko zwraca liczbę elementów, które wybiera selektora jQuery - w tym przypadku liczbę elementów z klasymydivclass
. Jeśli zwraca 0, wyrażenie jest fałszywe, a zatem nie ma żadnej, a jeśli zwraca jakąkolwiek inną liczbę, div musi istnieć.źródło
length
właściwość? Sprawdza to również każdy element z tą klasą, a nie tylkodiv
. (Teraz to może oznaczać OP, nawet jeśli nie to, co powiedział). Zobacz odpowiedź Stefana Kendalla, która robi to, co OP powiedział (nawet jeśli znowu mogły oznaczać to, co zrobiłeś).div
część, z dwóch powodów: 1) selektor nie jest tak ograniczony do faktu, że OP używadiv
elementu (może się zmienić w przyszłości), i 2) w większość przeglądarek i wersji jQuery, AFAIK, powinno to być szybsze.length
Nieruchomość jest tam, dlaczego nie korzystać? Ale jeśli to twoje preferencje, fair 'nuff. Z drugiej strony nie wiedziałem, że to zredagowałeś. Gdybym miał to zrobić, zostawiłbym to (ponownie, on konkretnie powiedział „... jeśli div z ...” (moje podkreślenie), a następnie wspomniał dodatkowo, że jeśli to nie miało znaczenia, czy to byłodiv
lub nie, można porzucić tę część. Ale cokolwiek. :-)size()
metoda ma na celu wyjaśnienie, że liczysz liczbę elementów w selektorze jQuery, a nie tylko w jakiejkolwiek starej tablicy. Ale znowu, to tylko moje preferencje.sprawdź, czy div istnieje z określoną klasą
źródło
źródło
źródło
W Jquery możesz używać tego w ten sposób.
Z JavaScript
źródło
Oto bardzo przykładowe rozwiązanie dla klasy kontrolnej (hasClass) w JavaScript:
źródło
Najlepszy sposób na Javascript:
źródło
if ($ („# myid1”). hasClass („mydivclass”)) {// Zrób coś}
źródło
Użyj tego, aby przeszukać całą stronę
źródło