jQuery..вытягивание строки перед текущим элементом
Вопрос
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 добавляет ссылку "Link 3" после каждой "Link 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>');
});
Решение
Вы можете получить предыдущего родственного брата, используя .метод prev().Вы можете сделать это, или вы можете получить ссылки .родитель(), а затем .найти() первый <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");
});
Другие советы
Если вы добавите класс, такой как "rowTitle", ко всем вашим выделенным жирным шрифтом тегам, которые заключают ваши заголовки, вы сможете сделать:
$("a:contains('Link 2')").each(function(){
$(this).parent().find(".rowTitle").html
});
Или что-то довольно похожее.В Документы jQuery являются довольно полными, и быстрый поиск там должен помочь вам найти то, что вы ищете.
Я не эксперт по jQuery, но я считаю, что это довольно близко к работе.Возможно, кто-то немного более сведущий в этом вопросе мог бы подробнее остановиться на моем ответе (поскольку я тоже был бы не прочь поучиться).