2010-06-14 7 views
7

요소가있는 직접적인 자식 수를 얻고 싶습니다. 그런 다음 특정 인덱스에서 자식 클래스를 가져옵니다. 같은 뭔가 :어린이()에서 자식 요소에 액세스하는 방법?

var index = 25; 
var children = $("#myListElement").children(); 
if (index < children.length) { 
    if (children[index].hasClass("testClass")) { 
     alert("hi!"); 
    } 
} 

나는 .children의 구문()가 괜찮다는 생각하지만, 어떻게 내가 JQuery와 스타일에서 그들을 밖으로 인덱스 요소를받을 수 있나요?

감사

답변

11

children 방법은 일반 DOM 노드를 포함하는 배열과 같은 개체를 반환합니다. jQuery를 사용하여 포함 된 요소를 래핑하거나 eq(index) 메서드를 사용하여 검색하여 hasClass과 같은 jQuery 메서드를 사용할 수 있어야합니다.

if ($(children[index]).hasClass("testClass")) 

jQuery는 명백한 성능상의 이유로 기본적으로 포장하지 않습니다.

Firebug 또는 Chrome/Webkit 개발자 도구를 사용하는 경우 객체에서 정의되지 않은 메소드를 호출 할 때 예외가 발생합니다. example을 참조하십시오. 콘솔 출력을 확인하고 있는지 확인하십시오.

+4

는 "아이들이 일반 DOM 노드의 배열을 포함"이있다 오해하기 쉽다. 'children()'은 다른 것처럼 설정된 jQuery입니다. '[3]'대신'.eq (3)'을 사용하면 jQuery가 래핑 한 DOM 요소를 예상대로 반환합니다. '[]'로 액세스 할 때 모든 jQuery 결과 세트는 DOM 요소를 리턴합니다. –

+0

기본적으로'children.eq (index) .hasClass ("testClass")는 응답을 어떻게 작성해야 하는지를 나타냅니다. –

+0

@Doug - "일반 DOM 노드 배열 포함"문이 완전히 올바르지 않습니다. jQuery는 배열과 같이 숫자로 색인화 된 DOM 노드를 포함하는 * 배열 형 * 객체를 반환합니다. 또한, 내가 틀렸다면 정정하되, jQuery가 모든 DOM 노드를 포장하여 성능을 높이기 전에 기본적으로 포장했을 때가 아니 었던가? – Anurag

2

죄송합니다. 귀하의 질문이 다소 혼란 스럽습니다. 이게 니가 원하는거야?

var parent = $("#myitem"), 
    count = parent.children().length, 
    index = parent.children(".theClass").index(); 

루프가 필요없는 특정 클래스가있는 항목의 하위 색인을 가져옵니다. 당신은 클래스가 필요 (그러나 이미 인덱스가) 경우

그러나, 다음을 수행하십시오

var parent = $("#myitem"), 
    count = parent.children().length, 
    classN = parent.children()[3].className; 
+1

두 번째 대답은 OP가 진행될 것이라고 생각합니다. – user113716

+0

@patrick Cool. 나는 그 질문을 이해한다고 생각했지만, 그 코드 예제가 나를 혼란스럽게 만들었다. –

0

사용 eq() :

if (children.eq(index).hasClass("testClass")) 
+0

Will-do, hasClass()에 여러 클래스 이름을 한 번에 제공 할 수 있습니까? .hasClass ("pig horse goat")처럼? – user291701

관련 문제