web-dev-qa-db-fra.com

Obtenir l'attribut href sur jQuery

J'ai quelques lignes de table

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

J'ai besoin d'obtenir des hyperliens dans l'attribut. J'utilise ce script

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

Problème: variable a_href est toujours/ref/ref/1.html

16
BILL

En boucle, vous devez vous référer à l'élément en cours de traitement, alors écrivez:

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

devrait être

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

Dans la première ligne, votre requête recherche l'ensemble du document. Dans le second, la requête démarre à partir de votre élément tr et obtient uniquement l'élément en dessous. (Vous pouvez combiner les finds si vous le souhaitez, je les ai laissés séparés pour illustrer le point.)

6
Dennis

Très simplement, utilisez this comme contexte: http://api.jquery.com/jQuery/#selector-context

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

Qui dit, trouvez 'div.cpt' uniquement à l'intérieur this

2
nachito

Utilisez ceci:

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

    });
});

Voir une démonstration de travail: http://jsfiddle.net/usmanhalalit/4Ea4k/1/

2
Muhammad Usman

ajoutez une référence à this, qui fait référence à votre b_row:

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

Utilisez $(this) pour obtenir l'élément desire.

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