2011-12-05 153 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) 
});