2012-03-22 48 views
0

今天我浪費了太多時間。假設我有這樣的事情:通過原型獲得最遠(最早)的祖先

<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元素的後代,我想el等於用命中類最古老的祖先(以這種情況下#p1)。

在jQuery中,它會像使用el.parents(「。hit」)並指向最後一個一樣簡單,但我正在處理遺留代碼並且必須使用原型。下面的代碼工作的的jsfiddle,而導致對生產非法標記錯誤:

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

請原型,告訴我你有一個簡單的方法來做到這一點。

+0

也許jsfiddle和您的製作網站之間的區別是doctype的嚴格性。 – clockworkgeek 2012-03-22 22:59:46

回答

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 2012-03-27 15:37:38