在jQuery中获取href属性

25

我有一些表格行

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

我需要获取带有<a>标签的超链接。我使用了以下脚本:

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个回答

73
在循环中,你应该引用当前处理的元素,因此应该编写:
var a_href = $(this).find('div.cpt h2 a').attr('href');

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

应该是这样的

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

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


4
请使用以下内容:
$(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
非常简单,使用this作为上下文: http://api.jquery.com/jQuery/#selector-context
var a_href = $('div.cpt', this).find('h2 a').attr('href');

这句话的意思是,只在当前元素内查找 'div.cpt' 元素。请注意保留 HTML 标签。

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);
});

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接