2010-04-01 4 views
0

J'ai découvert que .attr() ne s'applique qu'au premier élément de la page! Ainsi, j'ai essayé d'obtenir les hrefs de tous les éléments assortis sur une page, mais en vain.Jquery: Extraire les hrefs de plusieurs liens sur une page

Voici ce que je l'ai écrit à titre provisoire:

var thelinks = $("td a").each(function(){ 
    $(this).attr("href"); 
    document.write(thelinks); 
}); 

J'utilisé document.write juste pour voir ce qui se passait, et je me suis une longue liste de « undefinedundefinedundefined »

Ce que je suis en train de faire est d'extraire les hrefs de chaque td a, puis utiliser ajax pour visiter ces pages et faire d'autres choses. Je peux le faire fonctionner correctement quand il s'agit d'un seul lien, mais cette chose à éléments multiples que je ne peux pas comprendre.

Toute aide rendue est appréciée, je suis novice dans le monde de Javascript et de Jquery.

Répondre

3

Changer votre code

var thelinks = $("td a").map(function(){ 
    return $(this).attr("href");}); 

document.write(thelinks); 

Vous essayez d'imprimer le contenu de « thelinks » à l'intérieur de la fonction anonyme qui la définit.

1

Vous pouvez simplifier cela, vous avez un code supplémentaire et votre variable n'est pas définie correctement:

$("td a").each(function(){ 
    document.write($(this).attr("href")); 
}); 
2

Votre code n'a pas de sens; d'abord, each n'a pas de valeur de retour utile (vous voulez map à la place), et deuxièmement, vous imprimez thelinks avant qu'il ne lui soit attribué une valeur quelconque.

Probablement vous voulez quelque chose comme ça.

var thelinks = $("td a").map(function() { 
    return $(this).attr("href"); 
}).get(); 

// Just for example purposes 
document.write(thelinks.join(", ")); 
0

$ ("td a") carte (function() {return} this.href)

Questions connexes