获取jQuery的href属性

时间:2011-12-27 17:16:36

标签: jquery get href each attr

我有一些表格行

<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 个答案:

答案 0 :(得分:49)

在循环中你应该引用当前的procceded元素,所以写:

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

答案 1 :(得分:6)

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

应该是

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

在第一行中,您的查询将搜索整个文档。在第二个中,查询从您的tr元素开始,只获取其下的元素。 (如果您愿意,可以将find组合起来,我将它们分开来说明这一点。)

答案 2 :(得分:2)

非常简单,使用this作为上下文:http://api.jquery.com/jQuery/#selector-context

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

其中说,仅在'div.cpt'

内找到this

答案 3 :(得分:2)

使用此:

$(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 :(得分:1)

添加对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 :(得分:0)

使用$(this)获取所需元素。

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