Używam jQuery i chcę sprawdzić istnienie elementu na mojej stronie. Napisałem następujący kod, ale nie działa:
if($("#btext" + i) != null) {
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
Jak sprawdzić istnienie elementu?
lenght
zamiastlength
; to błąd w pisowni..length
.(Ponieważ wydaje mi się, że nie mam wystarczającej reputacji, aby zagłosować za odpowiedzią ...)
Wolf napisał:
Chociaż prawdą jest, że wywołanie właściwości length na niezdefiniowanym lub zerowym obiekcie spowoduje awarię przeglądarek, wynik selektorów jQuery ($ ('...')) nigdy nie będzie pusty ani niezdefiniowany. Dlatego sugestie dotyczące kodu nie mają sensu. Użyj jednej z pozostałych odpowiedzi, mają więcej sensu.
(Aktualizacja 2012) Ponieważ ludzie patrzą na kod, a ta odpowiedź jest dość wysoko na liście: Od kilku lat używam tej małej wtyczki:
Myślę, że $ ('div'). Any () czyta lepiej niż $ ('div'). Length , a ponadto nie będziesz tak bardzo cierpieć z powodu literówek: $ ('div'). Ayn () zwróci błąd w czasie wykonywania , $ ( 'div'). długość dyskretnie najprawdopodobniej zawsze być falsy.
__
Edycje listopad 2012:
1) Ponieważ ludzie mają tendencję do patrzenia na kod i nie czytania tego, co jest powiedziane wokół kodu, dodałem dwie duże uwagi lektora do zacytowanego kodu Wolfa.
2) Dodałem kod małej wtyczki, której używam w tej sytuacji.
źródło
Funkcja wyszukiwania zwraca tablicę pasujących elementów. Możesz sprawdzić, czy długość wynosi zero. Zwróć uwagę na zmianę, aby wyszukać elementy tylko raz i ponownie wykorzystać wyniki w razie potrzeby.
Ponadto, czy próbowałeś po prostu użyć funkcji tekstowej - jeśli żaden element nie istnieje, nic nie da.
źródło
Funkcja jquery $ () zawsze zwraca wartość różną od null - średnie elementy dopasowane do ciebie selector cretaria. Jeśli element nie został znaleziony, zwróci pustą tablicę. Twój kod będzie więc wyglądał mniej więcej tak -
źródło
W jQuery 1.4 otrzymujesz funkcję $ .isEmptyObject, ale jeśli jesteś zmuszony używać starszej wersji jQ, jak my, biedni programiści Drupala, po prostu kradnij ten kod:
Używaj go jak:
źródło
bez względu na to, co wybierzesz, funkcja
$()
zawsze zwraca obiekt jQuery, więc nie można jej używać do testowania. Najlepszym sposobem (jeśli nie jedynym) jest użyciesize()
funkcji lub natywnej właściwości length, jak wyjaśniono powyżej.źródło
Obiekt jQuery, który jest zwracany przez wszystkie natywne metody jQuery NIE jest tablicą, lecz obiektem z wieloma właściwościami; jeden z nich jest właściwością „długości”. Możesz również sprawdzić size () lub get (0) lub get () - 'get (0)' działa tak samo jak dostęp do pierwszego elementu, czyli $ (elem) [0]
źródło
A co z używaniem „undefined”?
źródło
użyj
$("#selector").get(0)
do sprawdzenia z null w ten sposób. get zwraca element dom, do tego czasu masz do czynienia z tablicą, w której musisz sprawdzić właściwość length. Osobiście nie lubię sprawdzania długości dla obsługi zerowej, z jakiegoś powodu mnie to dezorientuje :)źródło
Możesz to zrobić za pomocą właściwości length.
źródło
gdy obiekt jest pusty, zwraca ten błąd:
Próbuję tego kodu:
źródło
źródło
Wywołanie właściwości length w obiekcie undefined lub null spowoduje awarię przeglądarek IE i Webkit!
Zamiast tego spróbuj tego:
lub
źródło