0

在此处输入图像描述

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

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

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

上面代码的jsbin:

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

4

3 回答 3

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");

显然我把它弄反了!

于 2013-07-25T17:35:38.053 回答
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");
于 2013-07-25T17:43:13.680 回答
0

问题有点不清楚是要在第一个元素不为空时更新整个表,还是要更新每个匹配的行。对于整个表,你可以试试这个:

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

从描述来看,其他答案似乎错过了他希望在第一个元素不为空时应用它的事实。

于 2013-07-25T17:46:39.267 回答