2012-03-22 5 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

答えて

0

プロトタイプとjQueryはこの点で似ています(少なくとも私のドキュメントの解釈では)。プロトタイプでも.upメソッドを使用できるはずです。

あなたが提供したコードもPrototypeで動作するはずです。あなたはhereの例を見ることができます。

そうでない場合は、いつも.previousメソッドを試すことができます。

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

これがうまくいくと思われる理由を説明できますか? – clockworkgeek