Подтвердить что ты не робот

Получить атрибут href на jQuery

У меня есть несколько строк таблицы

<tr class="b_row">
<td>
<div class="cpt">
<h2>
<a href="/ref/ref/1.html">example</a>
</h2>
</div>
</td>
</tr>

<!--more elements -->

<tr class="b_row">
<td>
<div class="cpt">
<h2>
<a href="/ref/two/23.html">example N</a>
</h2>
</div>
</td>
</tr>

Мне нужно получить гиперссылки в атрибуте. Я использую этот script

function openAll()
{
$("tr.b_row").each(function(){
var a_href = $('div.cpt').find('h2 a').attr('href');
alert ("Href is: "+a_href);

});

}

Проблема: переменная a_href всегда/ref/ref/1.html

4b9b3361

Ответ 1

В цикле вы должны ссылаться на текущий обработанный элемент, поэтому пишите:

var a_href = $(this).find('div.cpt h2 a').attr('href');

Ответ 2

var a_href = $('div.cpt').find('h2 a').attr('href');

должен быть

var a_href = $(this).find('div.cpt').find('h2 a').attr('href');

В первой строке ваш запрос выполняет поиск всего документа. Во втором случае запрос начинается с вашего элемента tr и получает только элемент под ним. (Вы можете комбинировать find, если хотите, я оставил их отдельно, чтобы проиллюстрировать эту точку.)

Ответ 3

Используйте это:

$(function(){
    $("tr.b_row").each(function(){
    var a_href = $(this).find('div.cpt h2 a').attr('href');
    alert ("Href is: "+a_href);

    });
});

См. рабочую демонстрацию: http://jsfiddle.net/usmanhalalit/4Ea4k/1/

Ответ 4

добавьте ссылку на this, которая ссылается на ваш b_row:

$("tr.b_row").each(function(){
    var a_href = $( this ).find('div.cpt h2 a').attr('href');
    alert ("Href is: "+a_href);
});

Ответ 5

Очень просто используйте this как контекст: http://api.jquery.com/jQuery/#selector-context

var a_href = $('div.cpt', this).find('h2 a').attr('href');

Что говорит, найдите 'div.cpt' только внутри this

Ответ 6

Используйте $(this) для получения элемента желания.

function openAll()
{
     $("tr.b_row").each(function(){
        var a_href = $(this).find('.cpt h2 a').attr('href');
        alert ("Href is: "+a_href);
     });
}