2009-06-23 6 views
1

HTML ..jQuery .. tirant une chaîne avant l'élément courant

<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 ..

Jusqu'à présent, mon JS ajoute un lien "Link 3" après chaque "Link 2" ..

$("a:contains('Link 2')").each(function(){ 
    $(this).after(' <a href="#">Link 3</a>'); 
}); 

Pour chaque élément de la boucle, comment accéder au titre?

$("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>'); 
}); 

Répondre

1

Vous pouvez obtenir le frère précédent en utilisant le .prev() method. Vous pouvez le faire, ou vous pouvez obtenir les liens .parent(), puis .find() le premier tag <b>.

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

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

ou

<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

Si vous ajoutez une classe, comme « rowTitle » à toutes vos balises gras qui enveloppait vos titres, vous devriez être en mesure de le faire:

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

Ou quelque chose de très similaire. Les jQuery Docs sont assez complets, et une recherche rapide devrait vous aider à trouver ce que vous cherchez.

Je ne suis pas un expert en jQuery, mais je crois que c'est assez proche du travail. Peut-être que quelqu'un d'un peu plus versé dans la question pourrait élaborer sur ma réponse (comme cela ne me dérangerait pas d'apprendre aussi bien).

Questions connexes