2012-03-22 8 views
0

과 함께 클래스 이름별로 가장 먼 (가장 오래된) 조상을 얻습니다. 오늘 너무 많은 시간을 낭비했습니다. 에 (히트 클래스 가장 오래된 조상을 동일하게 el프로토 타입

<div id="p1" class="hit"> 
<div id="p2" class="no-hit"> 
<div id="p3" class="hit"> 
<div id="p4" class="no-hit"> 
<div id="p5" class="hit"> 
el 
</div></div></div></div></div> 

그래서 내 요소가 함수에 전달되고 있으며, 그것은 .hit 요소의 후손이라면, 내가 원하는 :의 나는 이런 식으로 뭔가를 가정 해 봅시다 이 경우 # p1).

jQuery에서는 el.parents (". hit")를 사용하고 마지막 코드를 가리키는 것처럼 간단하지만 기존 코드를 작업하고 프로토 타입을 사용해야합니다. 다음 코드는 jsfiddle에서 작동하지만, 생산에 불법 토큰 오류가 발생합니다 :

if(item.up('.hit') != undefined){ 
    while(item.up('.hit') != undefined){ 
    item = item.up('.hit'); 
    } 
} 

이 작업을 수행 할 수있는 쉬운 방법이 말해, 프로토 타입하시기 바랍니다.

+0

아마도 jsfiddle과 제작 사이트의 차이점은 doctype의 엄격 성입니다. – clockworkgeek

답변

0

프로토 타입과 jQuery는이 점에서 유사합니다 (최소한 필자의 설명서 해석시). prototype에서도 .up 메소드를 사용할 수 있어야합니다.

입력하신 코드는 Prototype에서도 잘 작동합니다. 예 : here을 볼 수 있습니다.

그렇지 않은 경우 언제든지 .previous 메서드를 사용해 볼 수 있습니다.

0
if(typeof item.up('.hit') != 'undefined') { 
    while(typeof item.up('.hit') != 'undefined') { 
    item = item.up('.hit'); 
    } 
} 
+0

이것이 더 효과가 있다고 생각하는 이유를 설명 할 수 있습니까? – clockworkgeek