2010-04-01 44 views
0

我发现.attr()仅适用于页面上第一个匹配的元素!所以,我一直试图从页面上的所有匹配元素中获取hrefs,但无济于事。Jquery:从页面上的多个链接提取hrefs

这里就是我试探着说:

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

我用文件撰写只是为了看看发生了什么事情,我得到了“undefinedundefinedundefined”

我试图以一个长长的清单是从每个td a中提取hrefs,然后使用ajax访问这些页面并执行其他操作。当它只处理一个链接时,我可以很好地工作,但我无法弄清这个多元素的东西。

任何帮助呈现的赞赏,我是JavaScript和JQuery的世界的新手。

回答

3

更改您的代码

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

document.write(thelinks); 

你想打印出定义它的匿名函数内部“thelinks”的内容。

1

你可以简化这个这个,你有一些额外的代码,你的变量没有正确定义:

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

您的代码是没有意义的;首先,each没有有用的返回值(您想要map代替),其次,您在打印thelinks之前已为其分配任何值。

也许你希望是这样的:

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

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

$( “TD一”)地图(函数(){返回this.href})