Domanda

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

Finora il mio JS aggiunge un " Link 3 " link dopo ogni " Link 2 " ..

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

Per ogni elemento del ciclo come accederei al titolo.

$("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>');
});
È stato utile?

Soluzione

Puoi ottenere il fratello precedente usando il metodo .prev () . Puoi farlo oppure puoi ottenere i link .parent () , e quindi .find () il primo <b> tag.

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

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

o

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

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

Altri suggerimenti

Se aggiungi una classe, come " rowTitle " a tutti i tuoi tag in grassetto che racchiudono i tuoi titoli, dovresti essere in grado di fare:

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

O qualcosa di abbastanza simile. I jQuery Docs sono abbastanza completi e una rapida ricerca lì dovrebbe aiutarti a trovare quello che stai cercando.

Non sono un esperto di jQuery, ma credo sia abbastanza vicino al lavoro. Forse qualcuno un po 'più esperto in materia potrebbe elaborare la mia risposta (poiché non mi dispiacerebbe imparare anche io).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top