jQuery:按索引选择表格列

3
我是一个有用的助手,以下是您需要翻译的内容:

我有一个表格MyTable,我想使用循环选择列i,并测试列i是否具有某个css类。

我尝试了这样做:

请注意,保留了HTML标记。
thestop = 4; // simplified for clarity

for (i = 0; i < thestop; i++){
   if ( $('#MyTable .th').eq(i).hasClass('MyClass') )
      { $(this).width('60'); }
}

当然,这个存在一些问题,我似乎想不出解决方法。欢迎任何想法!谢谢。

你的意思是,你想选择列标题单元格? - Šime Vidas
我可以问一下,问题到底是什么? - pimvdb
问题在于表格没有调整列宽。我正在循环遍历数组,因为我有另一个数组,其中包含每个属于 MyClass 类的列的宽度。如果我用警报替换宽度语句,什么也不会出现。 - frenchie
你确定 this 是指该列吗?由于它不在 jQuery 函数内,它可能指的是你不想要的其他东西。 - pimvdb
2个回答

4
$('#MyTable th.MyClass').each(function(i) {
    $(this).width( arr[i] );
}); 

其中arr是包含宽度的数组。


问题在于它们并不都是宽度为60。我有一个包含每列宽度的数组,我想循环遍历每一列,并将其分配给数组中相应索引处的值的宽度:column.MyClass [3] .width = Array [3],这是伪代码。 - frenchie

1

我注意到的第一件事是,.th 会找到具有 class th 的元素,而不是 <th> 元素(使用普通的 th)。此外,我不确定 $(this) 在这种情况下是否指向所选元素 - 我认为它只在 .each(function() {}) 函数中才会表现出这样的行为...

无论如何,我认为你可以用一个相当优雅的一行代码来实现这个:

thestop = 4;
$('#MyTable th.MyClass:lt('+thestop+')').width('60px');

这将在您的表格中查找所有索引小于 thestop<th>(使用 jQuery :lt 选择器),并在那里设置它们的宽度。如果您确实想要具有类“th”的元素,请将前导点放回去。
希望能对您有所帮助!

它做了一些奇怪的事情:如果我将tot设置为4,则它会将前4列的宽度设置为60。它需要仅为第4列设置宽度,而不是前4列。我也在尝试中。 - frenchie
@frenchie 啊 - 我误解了问题(抱歉)。您可以使用:eq而不是:lt-那应该是您想要的。在这样做时,您可能需要从“thestop”中减去一... 干杯! - Xavier Holt
没问题,我懂了。你的代码仍然很好,非常优雅! - frenchie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接