【发布时间】:2011-05-27 16:42:39
【问题描述】:
如何为表格中每一行的第一个单元格指定样式?
$("#myTable tr td:first").addClass("black");
【问题讨论】:
标签: jquery
如何为表格中每一行的第一个单元格指定样式?
$("#myTable tr td:first").addClass("black");
【问题讨论】:
标签: jquery
使用:first-child 伪类代替:first。
$("#myTable tr td:first-child").addClass("black");
:first 伪类实际上选择了列表中返回的第一个元素。例如,$('div span:first') 将仅返回恰好返回的第一个 div 下的第一个 span。
:first-child 伪类选择特定父级下的第一个元素,但返回与第一个子级一样多的元素。例如,$('table tr td:first-child') 返回每一行的第一个单元格。
当您使用:first 时,它只返回恰好被选中的第一行的第一个单元格。
有关更多信息,请参阅 jQuery 文档:
【讨论】:
你非常接近,我认为你需要的只是:first-child 而不是:first,所以是这样的:
$("#myTable tr td:first-child").addClass("black");
【讨论】:
像这样:
$("#myTable tr").each(function(){
$(this).find('td:eq(0)').addClass("black");
});
【讨论】:
find,并创建了一个函数,而仅使用 :first-child 伪类,您不会添加太多处理尚未在他的原始代码中使用。不过,它仍然是一个不错的选择。
find 语句更快,并且 (b) 使用单个选择器至少在代码量方面更有效。
$("#myTable tr").find("td:first").addClass("black");
【讨论】:
:first-child 效率低,因为它具有相同的结果,但会陷入循环。不过,find 方法的使用仍然很好。
试试:
$("#myTable td:first-child").addClass("black");
【讨论】: