jQuery:仅当第一个(:第一个)TD不包含文本(:empty)时才设置所有空子TD的样式

时间:2013-07-25 17:30:29

标签: javascript jquery css

enter image description here

只有当第一个td不包含文本时,我才需要一些jquery代码来设置所有空子tds的样式。

现在我的代码将所有空的TD样式设置为灰色(见图)。

我只想要设置第一行样式,因为第一行包含文本。换句话说,我需要测试第一个TD是否包含文本,如果是,则在该行上添加浅灰色,如果它是空白则不要将颜色添加到空TD。

jsbin上面的代码:

http://jsbin.com/ojemuf/1/edit

3 个答案:

答案 0 :(得分:6)

选择行,检查第一个孩子是否为空,获取其匹配的兄弟姐妹:

$('tr td:first-child:empty')。siblings(“td [class * ='_ crew']:empty”)。css(“background”,“#DDCEC0”);

$('tr td:first-child:not(:empty)').siblings("td[class*='_crew']:empty").css("background", "#DDCEC0");

显然我倒退了!

答案 1 :(得分:3)

我希望我能理解你的问题 循环通过tr元素,如果第一个不为空,则在tr元素内的空td中添加颜色

$('tr').each(function () {
  if(!$(this).find('td').first().is(':empty'))
    $(this).find('td:empty').css('background', '#ccc');
});

---编辑--- 反转版的Mathletics

$('tr td:first-child').not(':empty').siblings("td[class*='_crew']:empty").css("background", "#DDCEC0");

答案 2 :(得分:0)

当第一个元素不为空或者您想要更新每个匹配的行时,是否要更新整个表时,问题有点不清楚。对于整个表格,您可以尝试:

$("td:first:not(:empty)")
     .closest("table")
         .find("td[class*='_crew']:empty")
            .css("background", "#DDCEC0");

根据描述,似乎其他答案错过了他希望在第一个元素不为空时应用此事件的事实。