2011-12-05 118 views
0

如何获取元素集合?获取元素集合

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

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

回答

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

也许你需要each

+0

都试过..没有运气 – clarkk

+1

什么是 “this.tbl_list”?请提供更多的代码 – Mike

0

做到像这样(使用jQuery):

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

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

试试这个:

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

很难说什么错,没有看到你的标记,但这样的事情应该工作 -

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

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

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 . 

例如

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

您的解决方案,这应该是这样的:

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