假设我有一个包含许多列的宽表,并且我想将colspan=2
添加到:
<击> td#2, td#10, td#15
击>
td#3, td#11, td#16
我必须具体做到这一点:
$("table td").eq(2).attr('colspan','2')
$("table td").eq(10).attr('colspan','2')
$("table td").eq(15).attr('colspan','2')
或者我应该使用filter()
?
有没有更短的路?
答案 0 :(得分:6)
你可以这样做:
$("td:eq(2), td:eq(10), td:eq(15)", "table").prop('colspan',2);
我认为是最短的方式。
答案 1 :(得分:4)
你可以做到
$('table').find('td:eq(2), td:eq(10), td:eq(15)').prop('colspan', 2);
(我认为我会使用.prop()
代替.attr()
,但我需要确保:-)(编辑是的,这是一个不动产)
请注意,上述方法可行,但那些jQuery扩展搜索限定符(如:eq()
)可能会降低选择过程的速度。在仅选择单元格后使用单独的过滤步骤可能会更快。
另请注意,该选择(如原始代码)会在整个表格中找到第2个,第10个和第15个单元格 。如果你想在每一行上设置第2,第10和第15个单元格的属性,你可能想要不同的东西。
答案 2 :(得分:3)
$("table td").filter(':eq(2), :eq(10), :eq(15)').attr('colspan',2);
答案 3 :(得分:1)
作为多个选择器的替代方法,您可以调用带有函数的attr()形式并写入:
$("table td").attr("colspan", function(index) {
return index == 2 || index == 10 || index == 15 ? "2" : undefined;
});
(你可以在这里同样使用prop(),因为它的setter形式也支持获取一个函数,colspan
属性直接映射到同名的DOM属性。)
答案 4 :(得分:0)
您可以按如下方式优化代码。 <而是跳过DOM并搜索$("table td")
3次,将其缓存到变量中并使用它。
var td = $("table td");
td.eq(2).attr('colspan',2);
td.eq(10).attr('colspan',2);
td.eq(15).attr('colspan',2);
否则你可以做类似
的事情$("td:eq(2), td:eq(10), td:eq(15)", "table").attr('colspan',2);
否则
$("table").filter('td:eq(2), td:eq(10), td:eq(15)').attr('colspan',2);