2012-03-27 6 views
1

jQuery의 constructor은 요소 배열을 허용 할 수 있습니다.jQuery (elementArray) - 배열 항목의 자식 만 선택합니다.

elementArray 매개 변수의 사용법을 잘못 이해했거나 jQuery 버그입니까?

적용되는 선택기는 모두 배열에있는 항목 또는 하위 항목 인 HTMLElements에 적용됩니다. 그러나 배열 항목 중 자식 만 선택하는 것으로 보입니다.

예를 들어 다음 내용이 포함 된 배열에서는 요소가 클래스 topLevelDiv 또는 topLevelSpan과 일치하지 않습니다. http://jsfiddle.net/A49VV/1/

+0

http://jsfiddle.net/A49VV/1/ : js 사용 방법을 설명하십시오. – Blazemonger

+0

@ mblase75 : lol은 똑같은 것을 생각하고있었습니다 :) – mellamokb

+0

이것은 실제로 문서 **를 읽음으로써 대답 될 수있는 질문과 같은 것 같습니다. –

답변

1

jQuery를 같이하고있다 :

elementArray[0] contains 
    <div class="topLevelDiv"> 
     <span class="childSpan"></span><div class="childDiv"></div> 
    </div> 
elementArray[1] contains 
    <span class="topLevelSpan"> 
     <span class="childSpan"></span> 
    </span> 

이 elementArray 여기

$('div', elementArray) 
// OR 
$(elementArray).find('div') 

이 데모입니다) (찾을 포장 및 호출 컨텍스트 또는 객체로 사용할지 여부를 사실이다 예를 들어, find을 수행하거나 컨텍스트의 두 번째 매개 변수를 제공하면 내에서 범위 내에서 원하는 내용을 찾을 수 있습니다. elementArray의 최상위 노드를 기준으로 필터링하려면 filter 함수를 사용해야합니다.

+0

필터에서 읽은 것부터 jQuery 객체를 받아 들일 수 있습니다. [htmlElement, htmlElement ...]. –

+1

'$ (elementArray)'*는 * jQuery 객체입니다. '$ (elementArray) .find ('div') 대신'$ (elementArray) .filter ('div')'를 호출하면 예상대로 작동합니다. – mellamokb

0

jQuery(elementArray)은 배열의 모든 요소가 들어있는 jQuery 객체를 만듭니다. 해당 jQuery 객체에 적용한 모든 연산은 배열의 모든 요소에 적용됩니다.

그래서, 당신이 할 경우이 :

jQuery(elementArray).css("color", "red"); 

는 모든 요소의 텍스트 빨간색으로 변합니다. jQuery 연산은 이러한 특정 요소에 적용됩니다. 이러한 요소의 자식에게는 직접 적용되지 않습니다. 그것이 어린이에게 영향을 주는지 여부는 수술이 무엇인지에 달려 있습니다. 이는 jQuery가 설계된 것과 같습니다.

jQuery(elementArray)을 수행 할 때 선택기가 없기 때문에 "적용되는 모든 선택기"를 말할 때 명확하지 않습니다.

jQuery(elementArray)jQuery(elementArray).filter(selector)으로 필터링하면 선택기와 일치하지 않는 배열의 요소가 jQuery 개체에서 제거됩니다.

과 같이 .find()을 사용할 수 있습니다. 이렇게하면 selector에 일치하는 하위 항목에 대한 elementArray의 각 요소의 하위 항목이 표시되고 발견 된 모든 하위 항목이 반환 된 새 jQuery 객체에 배치됩니다.

+0

감사합니다. 필터와 검색을 통해 일치하는 반대 세트를 만듭니다. '$ (elementArray) .find ('div')'는'[div.childDiv]'를 생성하고'$ (elementArray) .filter ('div')'는'[div.topLevelDiv]'를 생성합니다. 나는 XPath PathExpr'// '과 같은 것을 찾고 있었는데,이 두 세트를 결합하는'모든 레벨에서 '를 선택했다. –

+0

@ 몬테, 당신이하려고하는 것과 교차하기를 바라는 몇 가지 다른 옵션을 묘사 한 이유는 당신이하려고하는 것을 정확히 (결코 그렇지 않다는 것을) 분명히 해두 지 못했습니다. 두 개의 서로 다른 선택을 조합하고 싶다면'.add()'메서드를 사용하여 새로운 요소를 기존 jQuery 객체에 추가하거나 두 개의 jQuery 객체를 결합하거나 새로운 선택기 연산의 결과를 기존 jQuery 객체에 추가 할 수있다. – jfriend00

관련 문제