获取元素的集合

时间:2011-12-05 10:24:51

标签: jquery

如何获取元素集合?

var tst = this.tbl_list.find('col');
alert('length = '+tst.length);
for(var key in tst){
    alert(tst[key][0].tagName);
}

此提醒length = 7(这是正确的计数),但每个元素都是undefined

6 个答案:

答案 0 :(得分:3)

这是因为当你使用for in时,你也会迭代所有的jQuery方法(findchildren等);并且这些都没有[0].tagName(有关为什么参见JavaScript for...in vs for的更多信息)。

相反,您应该使用each(),或使用for (;;;)循环;

var tst = this.tbl_list.find('col');
alert('length = '+tst.length);
for(var i=0;i<tst.length;i++){
    alert(tst[i].tagName);
}

你可以看到在这个JSFiddle中使用它们的不同之处; http://jsfiddle.net/nTCSY/

使用each(),你有;

tst.each(function () {
    alert(this.tagName);
});

答案 1 :(得分:3)

如果没有看到你的标记就很难说出现了什么问题,但这样的事情应该有用 -

tst.each(function() {
   alert(this.tagName)
});

演示 - http://jsfiddle.net/UjfUy/1/

答案 2 :(得分:1)

也许你需要each

答案 3 :(得分:0)

这样做(使用jQuery):

var elements = this.tbl_list.find('col'); 

$.each(elements, function(index, element){
   alert(element.tagName);
});

答案 4 :(得分:0)

试试这个:

var tst = this.tbl_list.find('col');
alert('length = '+tst.length);
for(var i=0;i<tst.length;i++){
    alert(tst[i].tagName);
}

答案 5 :(得分:0)

使用.get().eq()从dom对象集合中获取单个元素。

var tst = this.tbl_list.find('col');

alert('length = '+ tst.length);
for(i=0; i< tst.length ; i++  ){
   alert(tst.get(i).tagName);

 //or tst.eq(i)
}

另一种方式是.each()遍历dom元素。

.each() method is designed to make DOM looping constructs concise .

e.g。

$('li').each(function(index) {
    alert(index + ': ' + $(this).text());
});

对于你的解决方案,这应该是这样的:

tst.each(function() {
   alert(this.tagName)
});