Получить атрибут href в jQuery - PullRequest
       63

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

15 голосов
/ 27 декабря 2011

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

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

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

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

Ответы [ 6 ]

52 голосов
/ 27 декабря 2011

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

var a_href = $(this).find('div.cpt h2 a').attr('href');
6 голосов
/ 27 декабря 2011
var a_href = $('div.cpt').find('h2 a').attr('href');

должно быть

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

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

2 голосов
/ 27 декабря 2011

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

$(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/

2 голосов
/ 27 декабря 2011

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

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

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

1 голос
/ 27 декабря 2011

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

$("tr.b_row").each(function(){
    var a_href = $( this ).find('div.cpt h2 a').attr('href');
    alert ("Href is: "+a_href);
});
0 голосов
/ 27 декабря 2011

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

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