web-dev-qa-db-ja.com

jQueryのhref属性を取得します

テーブル行があります

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

16
BILL

ループでは、現在の処理済み要素を参照する必要があるため、次のように記述します。

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

あるべき

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

最初の行では、クエリはドキュメント全体を検索します。 2番目では、クエリはtr要素から始まり、その下の要素のみを取得します。 (必要に応じてfindsを組み合わせることができますが、ポイントを説明するために別々に残しました。)

6
Dennis

非常に簡単に、コンテキストとしてthisを使用します。 http://api.jquery.com/jQuery/#selector-context

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

つまり、'div.cpt'this内のみ

2
nachito

これを使って:

$(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
Muhammad Usman

b_rowを参照するthisへの参照を追加します。

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

Desire要素を取得するには、$(this)を使用します。

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