programing

jQuery or Selector?

muds 2023. 5. 16. 23:12
반응형

jQuery or Selector?

jQuery selector에서 "OR" 로직을 가질 수 있는 방법이 있는지 궁금합니다.예를 들어, 나는 어떤 요소가 클래스 A나 클래스 B를 가진 요소의 후손이라는 것을 알고 있고, 나는 다음과 같은 것을 하고 싶습니다.elem.parents('.classA or .classB')jQuery는 이러한 기능을 제공합니까?

쉼표를 사용합니다.

'.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' );

승인된 답변은 이와 유사한 기능을 제공하지만, 두 셀렉터(쉼표 앞과 뒤)가 모두 존재하는 경우 두 셀렉터가 모두 반환됩니다.

구글을 통해 이 페이지에 오를 수 있는 사람들에게 도움이 되길 바랍니다.

만약 당신이 요소 = 요소 1 || 요소 2의 표준 구조를 사용하려고 한다면, 당신은 정확하게 그것을 할 수 있습니다.

element = $('#someParentElement .somethingToBeFound') || $('#someParentElement .somethingElseToBeFound');

실제로 발견된 첫 번째 요소를 반환하는 것입니다.그러나 더 나은 방법은 다음과 같은 방식으로 jQuery 선택기 쉼표 구조(찾은 요소의 배열을 반환함)를 사용하는 것입니다.

element = $('#someParentElement').find('.somethingToBeFound, .somethingElseToBeFound')[0];

그러면 첫 번째 발견된 요소가 반환됩니다.

목록에서 활성 요소를 찾거나 활성 요소가 없는 경우 기본 요소를 찾는 데 사용합니다.예:

element = $('ul#someList').find('li.active, li:first')[0] 

활성 클래스가 있는 임의의 li를 반환하거나, 없으면 마지막 li를 반환합니다.

어느 쪽이든 좋습니다.그러나 || 어레이 접근 방식이 이미 요소를 찾더라도 모든 요소를 찾으려 하는 동안 진실한 것을 발견하는 즉시 처리를 중지하기 때문에 잠재적인 성능 페널티가 있습니다.한편 || 구성을 사용하면 반환할 셀렉터를 찾기 전에 여러 셀렉터를 거쳐야 하는 경우 성능 문제가 발생할 수 있습니다. 각 셀렉터에 대해 주 jQuery 개체를 호출해야 하기 때문입니다. (이것이 성능 히트인지 아닌지는 정말 모르겠지만 논리적일 수 있습니다.)그러나 일반적으로 선택기가 다소 긴 문자열일 때는 배열 방식을 사용합니다.

드디어 해킹 방법을 찾았습니다.

div:not(:not(.classA,.classB)) > span

(클래스와 함께 div.classAORclassB직접 어린이 스팬 포함)

다니엘 A.White Solution은 수업에 매우 유용합니다.

donee_1_card와 같은 입력 필드를 찾아야 하는 상황이 발생했습니다. 여기서 1은 인덱스입니다.

나의 해결책은

$("input[name^='donee']" && "input[name*='card']")

그것이 얼마나 최적인지는 잘 모르겠지만요.

언급URL : https://stackoverflow.com/questions/2263975/jquery-or-selector

반응형