我需要在指定类的所有div下获取所有 a 元素的 href 属性。当我只有一个div时没有问题,但是当div的数量增加时我得到了问题标题的错误.. here is my demo
,请看一看,不要忘记检查元素以获得错误消息(当您单击 请点击此处以获取结果 警告时,同时js错误将转到控制台)
答案 0 :(得分:1)
如果将选择器修改为.pg-header a
,则map()
功能可用于检索所有hrefs
:
function get_sub_elements(){
var hrefs = $(".pg-header a").map(function(i,e){
return $(e).attr("href");
});
for(var i = 0; i < hrefs.length; i++){
alert(hrefs[i]);
}
}
JS小提琴: http://jsfiddle.net/hth9Z/3/
答案 1 :(得分:1)
更改了您的代码
$(".pg-header a").each(function(index,elem) {
console.log(elem);
});
答案 2 :(得分:1)
如果使用更好的命名变量,我认为问题更明显......
$(".pg-header").each(function(index,element) {
for(i=0;i<$(element)[index].children.length;i++)
{
if($(element)[index].children[i].localName=="a")
{
alert($($(element)[index].children[i]).attr("href"));
my_arr.push($($(element)[index].children[i]).attr("href"))
}
}
});
传递给函数的参数是索引和循环中的特定项。你正在做的是获取你传递的一个元素(循环中的当前元素)并将其包装到jquery对象中。然后,您将索引应用于该索引。包装在jquery对象中的一个对象仍然只是一个项目,因此大于一的索引永远不合适。因此,当您将element
作为第二个匹配项并且index
为1时,在第二个循环中,$(element)[index]
未定义,因此当您调用方法时会出现错误。
因为你最好用jQuery做更多的事情。像$(".pg-header a")
之类的东西会获得.pg-header
中的所有锚元素,然后您可以像其他人建议的那样分析它们。
总而言之,请确保您了解您的参数是什么 - 给予他们合理的名称将有助于此。
有关您正在使用的方法的信息,另请参阅http://api.jquery.com/each/。