如何获取元素集合?
var tst = this.tbl_list.find('col');
alert('length = '+tst.length);
for(var key in tst){
alert(tst[key][0].tagName);
}
此提醒length = 7
(这是正确的计数),但每个元素都是undefined
!
答案 0 :(得分:3)
这是因为当你使用for in
时,你也会迭代所有的jQuery方法(find
,children
等);并且这些都没有[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)
});
答案 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)
});