2010-12-20 7 views
1

Ich brauche den Inhalt einiger spezifischer Elemente erhalten jquery verwenden, das Problem ist, dass ich das gleiche Element auf meiner Seite zu wiederholen haben:Holen Sie sich den Inhalt der Geschwister-Elemente mit jQuery

<div class="content"> 
    <img alt="" src=""> 
    <p class="txt">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> 
    <p class="info">Lorem ipsum dolor...</p> 
    <ul> 
    <li><a class="uiButton">Test</a></li> 
    </ul> 
</div> 

Also, die div. Inhalte wiederholen sich oft auf meiner Seite und ich möchte nur den Inhalt des divs abrufen, auf dem der Button geklickt wurde. Ich habe ein Onclick-Ereignis auf dem .uiButton gegeben und versucht, Eltern zu verwenden („txt‚) oder Geschwister (‘. Txt“), aber nicht zu funktionieren scheint ...

$(".uiButton").click(function(){ 
    var txt = $(this).parent(".txt").text(); 
} 

Antwort

5

.txt ist nicht ein Elternteil, und selbst dann hat es ein direkter Elternteil (.parent() paßt die unmittelbar übergeordneten wenn es die Wähler übereinstimmt) sein, anstatt Sie brauchen:

$(".uiButton").click(function(){ 
    var txt = $(this).closest("ul").siblings(".txt").text(); 
}); 

Die Alternative ist, den ganzen Weg bis zu .content gehen (über .closest()) sicher zu sein, dann durchqueren unten mit .find():

$(".uiButton").click(function(){ 
    var txt = $(this).closest(".content").find(".txt").text(); 
}); 
+0

danke Nick! Das war sehr hilfreich! – Luciano

+0

Der Grund, warum ich Ihre zweite Methode gewählt habe, war, dass die "ul" unbenannt war, ich bevorzuge es, die benannten Komponenten im Falle einer Strukturänderung auszuwählen. +1 – Orbling

2

Sie müssen gehen bis zum Wrapper und nach unten können Sie zu Geschwistern gehen, aber in diesem Fall wird es schwieriger.

$(".uiButton").click(function(){ 
    var txt = $(this).closest('.content').find('.txt').text(); 
} 
+1

Danke! Diese Lösung hat für mich funktioniert. – Luciano

+0

@Luciano: Ziemlich gut. – Orbling

0
$(this).closest('p.txt'); 

funktionieren könnte.