Відповіді:
Скористайтеся комою.
'.classA, .classB'
Ви можете пропустити простір.
AND
було б .classA.classB
.
Використання коми може бути недостатньою, якщо у вас є кілька об’єктів jQuery, які потрібно з'єднати.
Метод .add () додає вибрані елементи до набору результатів:
// classA OR classB
jQuery('.classA').add('.classB');
Це більш багатослівно '.classA, .classB'
, але дозволяє створювати складніші селектори, такі як:
// (classA which has <p> descendant) OR (<div> ancestors of classB)
jQuery('.classA').has('p').add(jQuery('.classB').parents('div'));
Я написав неймовірно простий плагін (5 рядків коду) для саме цієї функціональності:
http://byrichardpowell.github.com/jquery-or/
Це дозволяє ефективно сказати "отримати цей елемент, або якщо цього елемента не існує, використовуйте цей елемент". Наприклад:
$( '#doesntExist' ).or( '#exists' );
Хоча прийнята відповідь надає аналогічну функціональності цій, якщо обидва селектори (до та після коми) існують, обидва селектори будуть повернуті.
Сподіваюсь, це виявиться корисним для всіх, хто може зайти на цю сторінку через Google.
"a" || "b"
проти null || "b"
ванілі JS. Якщо ми застосуємо ту саму поведінку, $(a).or(b)
слід повернутися, $(a)
якщо вона існує, інакше вона повинна повернутися $(b)
. Я не думаю, що в цій номенклатурі нічого поганого, оскільки "або" відповідає поведінці СВ "||" (або) оператора.
or
. Те, про що інші говорять, більше схоже на дії concat
чи merge
дії.
Якщо ви хочете використовувати стандартну конструкцію element = element1 || element2, де JavaScript поверне першу, що є truthy, ви можете зробити саме це:
element = $('#someParentElement .somethingToBeFound') || $('#someParentElement .somethingElseToBeFound');
який би повернув перший елемент, який фактично знайдений. Але кращим способом, мабуть, було б використання конструкції селектора кома jQuery (яка повертає масив знайдених елементів) таким чином:
element = $('#someParentElement').find('.somethingToBeFound, .somethingElseToBeFound')[0];
який поверне перший знайдений елемент.
Я використовую це час від часу, щоб знайти або активний елемент у списку, або якийсь елемент за замовчуванням, якщо немає активного елемента. Наприклад:
element = $('ul#someList').find('li.active, li:first')[0]
який поверне будь-який li з класом активних або, якщо таких не буде, просто поверне останній li.
Або буде працювати. Однак можливі покарання за виконання, як || припинить обробку, як тільки знайде щось правдоподібне, тоді як підхід масиву спробує знайти всі елементи, навіть якщо він вже знайшов його. Потім знову, використовуючи || конструкт потенційно може мати проблеми з продуктивністю, якщо йому доведеться пройти кілька селекторів, перш ніж знайти той, який він поверне, тому що він повинен викликати головний об’єкт jQuery для кожного (я дійсно не знаю, чи це хіт продуктивності чи ні, просто логічно здається, що це могло бути). Однак загалом я використовую підхід масиву, коли селектор є досить довгим рядком.