jQuery .. en tirant une chaîne avant l'élément courant
Question
HTML ..
<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 a ajouté un " Link 3 " lien après chaque " lien 2 " ..
$("a:contains('Link 2')").each(function(){
$(this).after(' <a href="#">Link 3</a>');
});
Pour accéder à l'intitulé du titre, comment puis-je accéder au titre de la boucle?
$("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>');
});
La solution
Vous pouvez obtenir le frère précédent en utilisant la méthode .prev () . Vous pouvez le faire ou obtenir les liens .parent () , puis .find () la première <b>
balise.
<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");
});
Autres conseils
Si vous ajoutez une classe, telle que & "; rowTitle &"; à tous vos tags en gras qui enveloppent vos titres, vous devriez pouvoir faire:
$("a:contains('Link 2')").each(function(){
$(this).parent().find(".rowTitle").html
});
Ou quelque chose d'assez similaire. Les jQuery Docs sont assez complets et une recherche rapide devrait vous aider à trouver ce que vous cherchez. à la recherche de.
Je ne suis pas un expert de jQuery, mais j'estime que c'est assez proche du travail. Peut-être que quelqu'un un peu plus versé dans le sujet pourrait développer ma réponse (car cela ne me dérangerait pas d'apprendre aussi).