답변:
쉼표를 사용하십시오.
'.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"
vs. 의 동작을 고려하십시오 null || "b"
. 여기에 동일한 동작을 적용하면 존재하는 경우 $(a).or(b)
반환해야 $(a)
하며, 그렇지 않은 경우 반환해야합니다 $(b)
. "or"가 JS "||"의 동작과 일치하기 때문에이 명명법에는 문제가 없다고 생각합니다. (또는) 운영자.
or
. 다른 사람들이 말하는 것은 concat
또는 merge
행동 과 더 비슷합니다 .
element = element1 ||의 표준 구문을 사용하려는 경우 JavaScript가 진실한 첫 번째 것을 리턴하는 element2, 당신은 정확히 그렇게 할 수 있습니다 :
element = $('#someParentElement .somethingToBeFound') || $('#someParentElement .somethingElseToBeFound');
실제로 찾은 첫 번째 요소를 반환합니다. 그러나 더 나은 방법은 jQuery 선택기 쉼표 구문 (발견 된 요소의 배열을 반환)을 다음과 같은 방식으로 사용하는 것입니다.
element = $('#someParentElement').find('.somethingToBeFound, .somethingElseToBeFound')[0];
첫 번째로 찾은 요소를 반환합니다.
나는 때때로 그것을 사용하여 목록에서 활성 요소를 찾거나 활성 요소가없는 경우 기본 요소를 찾습니다. 예를 들면 다음과 같습니다.
element = $('ul#someList').find('li.active, li:first')[0]
활성 클래스가있는 리를 반환하거나 존재하지 않는 경우 마지막 리를 반환합니다.
작동합니다. 그러나 || 배열 접근 방식은 이미 요소를 찾았더라도 모든 요소를 찾으려고 시도하지만 진실한 것을 발견하면 처리를 중지합니다. 그런 다음 || 생성자는 반환 할 선택기를 찾기 전에 여러 선택기를 거쳐야 할 경우 잠재적으로 성능 문제가 발생할 수 있습니다. 그것은 논리적 일 수 있습니다). 그러나 일반적으로 선택기가 다소 긴 문자열 인 경우 배열 방식을 사용합니다.