jQuery:返回所有匹配的元素,而不仅仅是一个匹配的元素

时间:2011-04-28 06:23:26

标签: jquery html jquery-selectors

我有一个表,每个td都有title,id和lang属性。我想要所有符合指定标题和id的元素。所以我试过了:

var lossy = $("[title="+hicode+"][id="+hiwidth+"]").attr("lang");
alert(lossy);

但这只返回第一个匹配的元素。

任何想法返回数组中的所有匹配元素甚至字符串仍然可以。谢谢。

3 个答案:

答案 0 :(得分:7)

试试这个

var lossy = $("[title="+hicode+"][id="+hiwidth+"]").map(function() { return $(this).attr("lang"); });
alert(lossy);

我正在使用map函数将数组或类数组对象中的所有项目转换为另一个项目数组。 (http://api.jquery.com/jQuery.map/

答案 1 :(得分:3)

您可以使用jQuery each()函数循环遍历所有匹配的元素......

此代码定义一个数组,循环遍历所有匹配的元素,并将lang attr添加到数组中。

var results=new Array();

$("[title="+hicode+"][id="+hiwidth+"]").each(function(index){
  results[index] = $(this).attr("lang");
});

alert(results);

此外,这是一个循环div并收集id attr的示例:http://jsfiddle.net/tSmMj/

希望有所帮助:)

答案 2 :(得分:3)

标准jQuery函数$(selector)确实返回所有匹配元素。你的问题就在这里:

[id="+hiwidth+"]

您似乎拥有多个具有相同id属性且不允许的元素; id属性在每个页面中应该是唯一的,否则您将获得未定义的行为。在您的情况下,浏览器只返回您正在寻找id的第一个元素。

因此,您需要修复HTML,然后修复选择器以匹配更正后的HTML。