2009-08-25 20 views
0

I Prototyp bin mit und haben einige divs mit der ID p1 p2 p3 ... In diesen divs Ich habe einige divs mit id d1 d2 d3 ...

Ich möchte $ verwenden, um Ruft das angegebene d-Element im angegebenen p-Element auf. Wenn ich die Werte 3 und 4 bekomme, sollte ich $ ('p3') gehen können. $ ('D4') Diese Syntax funktioniert natürlich nicht.

Es gibt eine einfache Möglichkeit, dies mit jQuery zu tun, damit ich davon aus ich dies in Prototyp

Antwort

2

Leider Prototyp $ Funktionskette nicht, da es sich um eine erweiterte HTMLElement zurück Objekt und $ ist eine Fenstermethode. Sie können jedoch die $$ function zusammen mit einem CSS-Selektor verwenden, um dies zu erreichen:

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

Während die $$ Funktion eine erweiterte HTMLElement Objekt wie $ gibt es tatsächlich eine Reihe von ihnen zurückgibt, als CSS-Selektor könnte potenziell mehrere Elemente zuordnen

Sie können über CSS-Selektoren here lesen.

+0

+1. Obwohl es immer noch erwähnt werden sollte, dass es im Allgemeinen besser ist, einfach $ ('d4') zu machen, was Ihrem Beispiel entspricht. – Triptych

+0

Einverstanden. Mein Ansatz hier erzwingt nur die p3-> d4-Beziehung von der Frage, aber wie andere Antworten darauf hingewiesen haben, sollten IDs singulär sein, in welchem ​​Fall $ ('d4') angemessen wäre. –

1

Betrachtet man eine ID („Identifier“) vorhanden ist (soll) einzigartig, warum nicht nur die meisten spezifischen Bezeichner verwenden Sie haben - die zweite:

$('d4') 

Wenn Ihre Bezeichner nicht eindeutig zuzuordnen sind, sind sie nicht Identifikatoren ... Und sie sollten nicht als das Attribut „id“ des divs verwendet werden ...


Eigentlich, wenn yo u haben, so etwas wie dieses:

p1 
    d1 
    d2 
p2 
    d1 
    d2 
    d3 
p3 
    d1 

Ihre "pX" id sein können (sie einzigartig sind), aber Ihre "dX" sollte nicht ids sein; Eine Lösung könnte darin bestehen, die Klasse zum Speichern der "dX" -Informationen zu verwenden.

Ein bisschen wie das, nehme ich an:

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

Dann Sie die $$ Funktion mit einem CSS-Selektor verwenden werden: Wenn Sie das Element mit einem class = „d2“ innerhalb des elemnt von möchten id = "p1", könnte so etwas funktionieren:

$$ ('# p1 .d2');

dh:

  • p1 = Element mit id = p1

  • .D2 = Element, das eine Klasse enthält d2


Hope hat dies klar und hilft ..

1

Dies sollte funktionieren:

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

Dann wieder, wenn alle Ihre IDs eindeutig sind, wie sie sein sollten, warum dies nicht nur tun:

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