我正在尝试从特定行获取所有td
。
以下是代码:
$(window).scroll(function () {
var widthArray = new Array();
var i=0;
$('#firstRow > td').each(function () {
var tdclass = $('td').attr('class');
console.log(tdclass);
widthArray.push(tdclass);
i=i+1;
});
});
但它会在第一个td
停止而不是迭代。
更新: i
变量用于其他功能。
答案 0 :(得分:1)
$('#firstRow > td')
这是对的。上面的代码段会选择td
元素内的所有#firstRow
。
问题在于循环。
var tdclass = $('td').attr('class');
在这里,您忽略了要循环的所选td
,并选择页面中的所有td
;这就是$('td')
函数的作用。
当你使用jQuery时,循环回调接收元素作为参数,都作为context(this
); $.fn.each供参考。
所以要解决你的问题:
$('#firstRow > td').each(function (index, element) {
var tdclass = $(element).attr('class');
// ...
});
答案 1 :(得分:1)
每次迭代,您都会获得<td>
集合中第一个$('td')
元素的类。您可以将构造更改为更优雅:
$(window).scroll(function() {
var widthArray = $("#firstRow > td").map(function() {
return this.className;
}).get(),
i = widthArray.length;
// ...
});