2010-04-20 16 views
36

Ich versuche, das übergeordnete Element eines < Elternelements (Großeltern?) Abzurufen. Ich möchte diesen Großeltern finden, dann ein < b> -Tag in diesem Element finden und diesen Text als Variable speichern, um sie an anderer Stelle auf der Seite zu veröffentlichen. Ich habe versucht, die parent() -Funktion zu verwenden, aber ohne Erfolg.jQuery - Abrufen der zweiten übergeordneten Ebene eines Elements

Hier ist der Code, den ich versucht:

$('.mixPlayCell a').click(function() { 
     var title = $(this).parent().get(0).parent().get(0).text(); 
     alert(title); 
    }); 
+0

ich Sie nicht denken, verstehen, was '.get()' tut. –

+4

Ich sicher nicht. Alles, was ich in jQuery mache, ist raten und überprüfen ... Könnten Sie das näher erläutern? –

+0

Da 'parent() 'eine Sammlung mit nur einem Element zurückgibt, können Sie direkt die nächste Funktion aufrufen. Das 'get (0)' ist implizit. –

Antwort

37

Versuch:

$(this).parent().parent().find('.thingtofind').text(); 
+0

Ich dachte, ich habe das schon versucht, aber ich denke nicht! Funktioniert super, danke. –

+1

Betrachten Sie [link] http://stackoverflow.com/questions/1108971/jquery-parent-select-more-efficent-way für schnellere und elegantere aproach stattdessen mit .parent(). Parent() .... – dzona

2
$('.mixPlayCell a').click(function() { 
    elem = $(this).parent().parent(); 
    title = $("tag selector goes here",elem).html(); 
}); 

So etwas wie das?

+0

+1, .get (0) ist unnötig und gibt das DOM-Objekt zurück, das nicht über die jQuery-Methoden verfügt. [Siehe hier] (http://static.bwerp.net/~adam/2010/04/20/parent.html). –

0
$(this).parent().parent().find('mytag').text() 

Sollte gut funktionieren.

Sie können einen beliebigen Selektor in der find Methode verwenden. Wenn Sie nur in den direkten Kindern des Elements der Großeltern suchen müssen, können Sie auch $.children anstelle von find verwenden, die in allen untergeordneten Elementen des Elements sucht.

1

Es gibt nur 1 Elternteil, keine Notwendigkeit .get (0)

var title = $(this).parent().parent().find("whateveryouwant").html(); 
46

Für eine zweite Mutter Auswahl

parents(':eq(1)') 

sieht glatter als

parent().parent() 

Auch Sie könnte das

finden

passt die Arbeit besser.

-1

Versuchen Sie, diese für einfache Implementierung:

$('.mixPlayCell a').click(function() { 
    var title = $(this).parents().text(); 
    alert(title); 
}); 

gerade geändert .parent() mit einem .parents()

Dies funktioniert für alle jQuery-Versionen ist.

Verwandte Themen