我有以下代码,我将通过表列,如果它是最后一列,我希望它做一些不同的事情。现在它的硬编码,但我怎么能改变,所以它自动知道它的最后一列
$(this).find('td').each(function (i) {
if(i > 0) //this one is fine..first column
{
if(i < 4) // hard coded..I want this to change
{
storageVAR += $(this).find('.'+classTD).val()+',';
}
else
{
storageVAR += $(this).find('.'+classTD).val();
}
}
});
答案 0 :(得分:13)
如果您想要访问.each()
回调中的长度,那么您只需要预先获得长度,以便在您的范围内可用。
var cells = $(this).find('td');
var length = cells.length;
cells.each(function(i) {
// you can refer to length now
});
答案 1 :(得分:6)
看起来您的目标是以逗号分隔的值列表,为什么不收集值并使用数组方法“join”?
var values = []
$(this).find('td .' + classTD).each(function(i) {
if (i > 0) values.push($(this).val());
});
storageVAR = values.join(',');
答案 2 :(得分:2)
这样的事情应该这样做:
var $this = $(this),
size = $this.length,
last_index = size -1;
$this.find('td').each(function (index) {
if(index == 0) {
// FIRST
} else if(index === last_index) {
// LAST
} else {
// ALL THE OTHERS
}
});
答案 3 :(得分:-2)
如果你想要的只是最后一列,你可以使用
$(this).find('td:last')
如果您想对其他列进行操作,请转到
$(this).find('td:last').addClass("last");
$(this).find('td').each(function() {
if ($(this).hasClass("last")) {
// this is the last column
} else {
// this isn't the last column
}
});
如果您对此感到满意,可以使用data()
代替addclass()
。
如果您想要做的只是在字符串末尾没有逗号,那么您可以随后将其删除:
storageVAR = storageVAR.substr(0, (storageVAR.length - 1);