jQuery:返回所有匹配的元素不仅一个匹配元素
我有一个表,其中每个td都有title,id和lang属性。我想要所有匹配指定标题和ID的元素的所有lang。所以我试过了:jQuery:返回所有匹配的元素不仅一个匹配元素
var lossy = $("[title="+hicode+"][id="+hiwidth+"]").attr("lang");
alert(lossy);
但是这个返回只是第一个匹配的元素。
任何想法返回数组或甚至字符串中的所有匹配的元素仍然可以。谢谢。
您可以通过所有匹配的元素的使用jQuery的each()
功能循环......
此代码定义了一个数组,通过所有的匹配元素的循环,并增加了郎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/
希望帮助:)
标准jQuery函数,$(selector)
,并返回所有匹配的元素。你的问题就在这里:
[id="+hiwidth+"]
你似乎有相同的id
属性的多个元素,并且是不允许的; id
属性在每个页面中应该是唯一的,否则您将会得到未定义的行为。在你的情况下,浏览器只返回你正在寻找的第一个包含id
的元素。
因此,您需要修复您的HTML,然后修复您的选择器以匹配您更正的HTML。
谢谢。我将避免使用具有相同id属性的多个元素。 – Protocole 2011-04-28 06:56:00
试试这个
var lossy = $("[title="+hicode+"][id="+hiwidth+"]").map(function() { return $(this).attr("lang"); });
alert(lossy);
我使用的地图功能转换在阵列或阵列状物体的所有项目,以项目的另一个数组。 (http://api.jquery.com/jQuery.map/)
谢谢。您的解决方案也适用于我。 – Protocole 2011-04-28 06:56:34