jQuery .. puxando uma corda antes elemento atual
Pergunta
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 ..
Até agora o meu JS adiciona um link "Fazer a ligação 3" após cada "Link 2" ..
$("a:contains('Link 2')").each(function(){
$(this).after(' <a href="#">Link 3</a>');
});
Para cada item no circuito como eu acessar o título.
$("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>');
});
Solução
Você pode obter o irmão anterior usando a .prev () método . Você pode fazer isso, ou você pode obter os links .parent () , e depois .find () o primeiro 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");
});
Outras dicas
Se você adicionar uma classe, como "rowTitle" para todas as suas tags em negrito que estão envolvendo seus títulos, você deve ser capaz de fazer:
$("a:contains('Link 2')").each(function(){
$(this).parent().find(".rowTitle").html
});
Ou algo bastante similar. A jQuery Docs são bastante abrangente, e uma rápida pesquisa deve ajudá-lo a encontrar o que você está procurando.
Eu não sou um especialista em jQuery, mas eu acredito que é bastante perto de trabalho. Talvez alguém um pouco mais versados ??no assunto poderia elaborar sobre a minha resposta (como eu não me importaria de aprender bem).