Odpowiedzi:
Użyj przecinka.
'.classA, .classB'
Możesz pominąć spację.
AND
byłoby .classA.classB
.
Używanie przecinka może nie być wystarczające, jeśli masz wiele obiektów jQuery, które muszą zostać połączone.
Metoda .add () dodaje wybrane elementy do zestawu wyników:
// classA OR classB
jQuery('.classA').add('.classB');
Jest bardziej szczegółowy '.classA, .classB'
, ale pozwala budować bardziej złożone selektory, takie jak:
// (classA which has <p> descendant) OR (<div> ancestors of classB)
jQuery('.classA').has('p').add(jQuery('.classB').parents('div'));
Napisałem niesamowicie prostą (5 linii kodu) wtyczkę do tej właśnie funkcji:
http://byrichardpowell.github.com/jquery-or/
Pozwala skutecznie powiedzieć „pobierz ten element lub jeśli ten element nie istnieje, użyj tego elementu”. Na przykład:
$( '#doesntExist' ).or( '#exists' );
Chociaż zaakceptowana odpowiedź zapewnia podobną funkcjonalność, jeśli istnieją oba selektory (przed i po przecinku), oba selektory zostaną zwrócone.
Mam nadzieję, że okaże się pomocny dla każdego, kto może wylądować na tej stronie za pośrednictwem Google.
"a" || "b"
vs. null || "b"
w waniliowym JS. Jeśli zastosujemy to samo zachowanie tutaj, $(a).or(b)
powinien zwrócić, $(a)
jeśli istnieje, w przeciwnym razie powinien wrócić $(b)
. Nie sądzę, żeby było coś złego w tej nomenklaturze, ponieważ „lub” pasuje do zachowania JS „||” (lub) operator.
or
. To, o czym mówią inni, przypomina bardziej akcję concat
lub merge
akcję.
Jeśli chcesz użyć standardowej konstrukcji elementu = element1 || element2, w którym JavaScript zwróci pierwszy, który jest prawdziwy, możesz zrobić dokładnie to:
element = $('#someParentElement .somethingToBeFound') || $('#someParentElement .somethingElseToBeFound');
co zwróciłoby pierwszy znaleziony element. Ale lepszym sposobem byłoby prawdopodobnie użycie konstrukcji przecinka selektora jQuery (która zwraca tablicę znalezionych elementów) w następujący sposób:
element = $('#someParentElement').find('.somethingToBeFound, .somethingElseToBeFound')[0];
który zwróci pierwszy znaleziony element.
Używam tego od czasu do czasu, aby znaleźć element aktywny na liście lub jakiś element domyślny, jeśli nie ma elementu aktywnego. Na przykład:
element = $('ul#someList').find('li.active, li:first')[0]
który zwróci dowolne li z klasą aktywnych lub, jeśli nie będzie, po prostu zwróci ostatnie li.
Albo zadziała. Istnieją jednak potencjalne kary za wyniki, ponieważ || przestanie przetwarzać, gdy tylko znajdzie coś prawdziwego, podczas gdy podejście tablicowe spróbuje znaleźć wszystkie elementy, nawet jeśli już je znalazł. Z drugiej strony, używając || konstrukcja może potencjalnie mieć problemy z wydajnością, jeśli będzie musiała przejść przez kilka selektorów przed znalezieniem tego, który zwróci, ponieważ musi wywołać główny obiekt jQuery dla każdego (naprawdę nie wiem, czy jest to wzrost wydajności, czy nie, wydaje się to logiczne, że tak może być). Ogólnie jednak używam podejścia tablicowego, gdy selektor jest raczej długim ciągiem.
Daniel A. White Solution świetnie sprawdza się na zajęciach.
Mam sytuację, w której musiałem znaleźć pola wejściowe, takie jak donee_1_card, gdzie 1 to indeks.
Moje rozwiązanie zostało
$("input[name^='donee']" && "input[name*='card']")
Chociaż nie jestem pewien, jak optymalne jest.