JQuery .. потянув строку перед текущим элементом - PullRequest
1 голос
/ 23 июня 2009

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

Пока мой JS добавляет ссылку "Ссылка 3" после каждой "Связи 2" ..

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

Для каждого элемента в цикле, как мне получить доступ к названию.

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

Ответы [ 2 ]

1 голос
/ 23 июня 2009

Если вы добавите класс, такой как «rowTitle», ко всем вашим жирным тегам, которые обертывают ваши заголовки, вы сможете сделать:

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

Или что-то довольно похожее. jQuery Docs довольно всеобъемлющий, и быстрый поиск там должен помочь вам найти то, что вы ищете.

Я не эксперт по jQuery, но я считаю, что это довольно близко к работе. Возможно, кто-то более сведущий в этом вопросе мог бы уточнить мой ответ (так как я тоже не возражал бы учиться).

1 голос
/ 23 июня 2009

Вы можете получить предыдущего брата, используя метод .prev () . Вы можете сделать это или получить ссылки .parent () , а затем .find () первый тег <b>.

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

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

или

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

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