2009-06-23 13 views
1

HTML ..jQuery .. ziehen einen String vor aktuellen Element

<div class="row"> 
    <div> 
     <b>Title A</b> <a href="#">Link 1</a> <a href="#">Link 2</a> 
    </div> 
    Content A 
</div> 
<div class="row"> 
    <div> 
     <b>Title B</b> <a href="#">Link 1</a> <a href="#">Link 2</a> 
    </div> 
    Content B 
</div> 
<div class="row"> 
    <div> 
     <b>Title C</b> <a href="#">Link 1</a> <a href="#">Link 2</a> 
    </div> 
    Content C 
</div> 

jQuery ..

Bisher meine JS nach jedem "Link 2" ein "Link 3" Link hinzufügt ..

Für jedes Element in der Schleife wie würde ich auf den Titel zugreifen.

$("a:contains('Link 2')").each(function(){ 
    // I need to find the title string for each row. So is there a way to find elements before the $(this) identifier? 
    $(this).after(' <a href="#">Link 3</a>'); 
}); 

Antwort

1

Sie können die vorherigen Geschwister erhalten, indem die .prev() method verwenden. Sie können das tun, oder Sie erhalten die Links .parent() und dann .find() die erste <b>-Tag.

<p>Something Here</p> <!-- This becomes red --> 
<p class="pickme">Hello World</p> 

$(document).ready(function(){ 
    $(".pickme").prev().css("color","red"); 
}); 

oder

<p>Something Here</p> <!-- this becomes green --> 
<p class="pickme">Hello World</p> 

$(document).ready(function(){ 
    $(".pickme").parent().find("p:first").css("color", "green"); 
}); 
1

Wenn Sie eine Klasse, wie "rowTitle", um alle Ihre bold-Tags hinzufügen, die Ihre Titel Einwickeln, sollten Sie in der Lage zu tun:

$("a:contains('Link 2')").each(function(){ 
    $(this).parent().find(".rowTitle").html 
}); 

Oder etwas ziemlich ähnlich. Die jQuery Docs sind ziemlich umfassend, und eine schnelle Suche dort sollte Ihnen helfen, zu finden, nach was Sie suchen.

Ich bin kein Experte für jQuery, aber ich glaube, das ist ziemlich nah dran zu arbeiten. Vielleicht könnte jemand, der etwas besser mit der Sache vertraut ist, meine Antwort näher ausführen (da ich auch nichts dagegen hätte, zu lernen).

Verwandte Themen