2009-08-25 7 views
0

私はプロトタイプを使用して、私はID d1をd2とd3を持ついくつかのdivを持っているこれらのdivのid P1 P2 P3 ... でいくつかのdiv要素を持っているよ...

指定されたp要素に指定されたd要素を取得します。

値3と4を指定した場合、私は$( 'p3')に行くことができるはずです。$( 'd4') この構文はもちろん機能しません。

jQueryを使ってこれを行う簡単な方法は、私は(あるべき)ユニークな、なぜちょうど最も固有の識別子にあなたを使用していない、これはID(「識別子」)を考慮すると、プロトタイプ

答えて

2

残念ながら、プロトタイプの$機能は、チェーンないのオブジェクトであり、$はウィンドウメソッドです。ただし、これを達成するためにCSSセレクタと一緒に$$ functionを使用することができます。

$$('#p3 #d4').first(); // Element with id 'd4' that's a descendant of an element with id 'p3' 

$$機能だけで$のような拡張HTMLElementオブジェクトを返しますがCSSセレクタは、潜在的可能性として、それは実際には、それらの配列を返します。複数の要素に一致します。

CSSセレクタhereについて読むことができます。

+0

+1。あなたの例に相当する$( 'd4')を実行する方が一般的には良いと言われます。 – Triptych

+0

合意。ここでの私のアプローチは、質問からp3 - > d4の関係を強制するだけですが、他の回答が指摘したように、IDは単数でなければなりません。その場合、$( 'd4')が適切です。 –

1

に存在していると仮定しているがあります持っている - 第二1:

$('d4') 

あなたの識別子が一意でない場合、彼らは識別子ではありません...そして、彼らは...あなたのdiv要素の「id」属性として使用すべきではない


実際、 uはこのようなものを持っている:

p1 
    d1 
    d2 
p2 
    d1 
    d2 
    d3 
p3 
    d1 

あなたの「pXの」IDを指定することもできます(彼らはユニークである)が、あなたの「DXが」IDSすべきではありません。解決策は、クラスを使用して "dX"情報を格納することです。ビットこのような

、私は考えます:

id=p1 
    class=d1 
    class=d2 
id=p2 
    class=d1 
    class=d2 
    class=d3 
id=p3 
    class=d1 

その後、あなたはCSSセレクタで$$機能を使用します:あなたはのelemnt内部クラス=「D2」を持つ要素をしたい場合id = "p1"の場合、次のように動作します。

$$( '#p1 .d2');

すなわち:

  • P1 = D2


を含むクラスが、これは明確であり、お役に立てば幸い持っID = P1

  • .d2 =要素を持つ要素。..

  • 1

    これはうまくいくはずです:

    再び
    $('p3').select('#d4').first() 
    

    、彼らがあるべきとしてあなたのIDのすべてが、ユニークであれば、なぜこれだけません:それは、拡張HTMLElementを返すよう

    $('d4'); 
    
    0
    $('p3').select(new Selector('#d4'));