Jquery:迭代一个数组并找到具有特定id的节点

时间:2010-11-19 14:37:16

标签: javascript jquery

我有一个div元素列表:

var list = $('.divelement').get();

我想使用jQuery在每个div元素中查找特定元素(其id包含“hdnPK”)。类似的东西:

var elem1 = list[0].$("[id*='hdnPK']").get();
var elem2 = list[1].$("[id*='hdnPK']").get();

但你不能像我上面那样写它。你如何使用jQuery迭代常规数组?

4 个答案:

答案 0 :(得分:6)

如果要查找的元素是嵌套的,请执行以下操作:

$(list).find("[id*='hdnPK']")

如果它是顶级的,请执行以下操作:

$(list).filter("[id*='hdnPK']")

只是想确保您知道.get()从jQuery对象中提取DOM元素的数组。如果您对此没有任何特殊需求,那么您可以这样做:

var list = $('.divelement');

list.find("[id*='hdnPK']")
// or
list.filter("[id*='hdnPK']")

或者,如果您不需要中间缓存集,请执行以下操作:

$('.divelement [id*="hdnPK"]') // for nested
$('.divelement[id*="hdnPK"]') // for top level

答案 1 :(得分:2)

$(".divelement").each(function() {

    var $specific_element = $(this).find("[id*='hdnPK']");

});

答案 2 :(得分:0)

你可以在jquery中迭代一个数组,就像在javascript中一样:

var myarray = new Array(1,2,3,4); 
for (key in myArray){
     alert key; 
}

How many ways can you iterate through an array in javascript?

答案 3 :(得分:0)

patrick dw答案的变体,您可以使用.eq().get()方法获取特定元素:

var list = $('.divelement');
var secondElement = list.find("[id*='hdnPK']").eq(1); // return a jQuery-wrapped object
var thirdElement = list.find("[id*='hdnPK']").get(2); // returna a DOM element

此外,jQuery提供了一个方便的.each()方法:

var list = $('.divelement');
list.find("[id*='hdnPK']").each(function() {
  // this inside this function refers to the currently iterated element
  console.debug(this); // write out the DOM element to the console
});