2013-03-13 3 views
1

은 퀴즈 퀴즈에 대한 DOM 통과에 대한 도움이 필요합니다. 구조는 사람이 jQuery를들이는 선택을해야한다 NEXT 버튼을 클릭하면 ..jQuery DOM Traversal - 뒤로 다음

<div class="trivia_entry"> 
<div class="pad50"> 
<span>question</span> 
..radio buttons... 
<input type="button" class="quizbutt" value="NEXT" /> 
</div> 
</div> 
<div class="trivia_entry"> 
<div class="pad50"> 
<span class="pno">INCORRECT</span> 
<p>answer description</p> 
</div> 
</div> 

가 반복 질문/응답 구조와 내부 된 div의 동적가 있습니다 ..하고 다음을 변경해야 (대답) 다음 답안 (span)의 범위에있는 클래스는 그들의 대답이 맞으면 "pyes"가됩니다. 나는

$(this).parent().parent().parent().next('.trivia_entry span').removeClass('pno').addClass('pyes').html('CORRECT'); 

어떤 아이디어가 진정으로 당신이 할 수있는 몇 가지 parent 방법 대신

+0

"$ (this)"는 무엇과 관련이 있습니까 ?? 정확히 무엇을 고르고 싶습니까? –

답변

1

:-) 감사합니다 .. (버튼 클릭 핸들러 내에서)하지만 .. 시도를 스팬을 선택할 수없는 것

$(this).closest('.trivia_entry') 
     .next('.trivia_entry') 
     .find('span') 
     .removeClass('pno') 
     .addClass('pyes') 
     .html('CORRECT'); 

http://jsfiddle.net/2JvHf

PS : closest 방법을 사용 당신이 부모를 사용하는 데 필요한 나 thods 대신 세 next 메서드가 작동하지 않으면 span을 선택기에서 제거하고 find 메서드를 대신 사용해야합니다.

+1

'.closest'와'.find'를 사용하는 것에 대한 또 다른 좋은 점은 jQuery가 HTML 구조에 대한 앞으로의 조정에 비하면 덜 취약하다는 것입니다. – sscirrus

+0

감사합니다 "undefined":-) 미래에는 어떻게 다음 .next 작동합니까? .parent() selector는 포함 된 'trivia_entry'로 되돌아갔습니다. 그래서 나는 .next가 거기서부터 앞으로 나아갈 것이라고 생각했습니다. – Andy

+0

@Andy 'next'는 다음 직접 형제 요소가 지정된 선택자와 일치하는지 여부 만 확인합니다. 하위 요소를 선택하지 않습니다. – undefined