2009-02-16 8 views
6

Ich versuche, die folgende Auswahl zu tun machen:jQuery-Selektor Kontext Frage

$(".program", row) 

Wo „Reihe“ ist ein jQuery-Objekt enthält zwei Tabellenzeilen. Einer der TRs hat die Klasse ‚Programm“ Dieser Selektor scheint nicht zu finden jedoch folgende Arbeiten:...

$(".title", row) 

wo div.title ein Nachkomme von tr.program ist

Wenn ich benutze ein jQuery-Objekt als Selektor Zusammenhang bin ich nicht in der Lage Top-Level-Elemente dieses jQuery-Objekt übereinstimmen?

dank,

-Morgan

Antwort

-1

Sie am meisten certainl Sie können die Elemente der obersten Ebene zuordnen. Könnten wir die Quelle sehen, die Sie verwenden? Ihr Code sollte funktionieren, daher gibt es wahrscheinlich ein Problem im HTML-Code selbst.

0

Sie sind mit Nachkommen auf dem richtigen Weg. Übergeben von Kontext an einen Selektor sucht nach allen Nachkommen, die in diesem Kontext gefunden werden.

Da in Ihrem Fall das Objekt kein "Elternteil mit zwei Zeilen" ist, sondern "eine Sammlung von Zeilen", ist .Program nicht auswählbar. Da .title ein tatsächlicher Nachkomme in Ihrer Sammlung ist, ist es wählbar.

+0

kühlen. Danke für die Bestätigung meiner Beobachtung. Mein Objekt ist das Ergebnis von $ (someHTML) .appendTo (aTable). Haben Sie Vorschläge, wie Sie diese Zeilen am besten nach Klassen auswählen können? Ich könnte über das Jquery-Objekt iterieren, aber ich hoffe auf etwas hübscheres. – morgancodes

+0

Iteration mit jQuery die $ .Each-Funktion ist nicht so hässlich, wenn Sie Ihren bestehenden Selektor-Code beibehalten möchten. –

2

Mein Verständnis ist, dass der Kontext Root-Ebene sein muss, d. H. Ein Elternteil, in dem Sie Ihre Auswahl treffen möchten.

EDIT: jetzt etwas zu lesen getan haben, sollten Sie in der Lage sein Top-Level-Elemente des Kontextes anzupassen (der Standardkontext ist document).

Beardscratchers hat einen guten Artikel über die Verwendung von Kontext mit jQuery Selektoren. Im Allgemeinen sollten Sie versuchen, eine Element-ID als Kontext für einen umbrochenen jQuery-Satz zu übergeben, da dies die performanteste Methode zum Suchen eines Elements darstellt.

Intern Selektor Zusammenhang mit dem .find Verfahren implementiert ist, so ist $(selector, context) entsprechen $(context).find(selector)

+0

Wenn es äquivalent zu $ ​​(Kontext) ist.find (selector) 'dann sollte beachtet werden, dass der Selektor nicht mit dem Kontext selbst übereinstimmt, wenn es ein Element ist, da find() nur mit Nachkommen übereinstimmt. – Jason

+1

@Jason Das stimmt, der Kontext ist der Bereich, in dem gesucht werden soll, sich selbst ausgenommen –

6

Es sieht aus wie Sie versuchen, Elemente auszuwählen, aus denen Sie bereits ausgewählt haben (in dem jQuery-Objekt mit Wohnsitz) .

Kontext, so weit wie jQuery betroffen ist, ist wie ein Elternteil angeben - der Kontext ist ein Knoten irgendwo oben was Sie in der DOM-Struktur suchen. Im Kontext sucht jQuery nach dem von Ihnen angegebenen Selektor.

Wenn ich richtig über das, was Sie versuchen dann, dies zu tun sollte funktionieren:

row.filter('.program'); 

// And then: 
row.filter('.program').find('.title');