仅当第一个 td 不包含文本时,我才需要一些 jquery 代码来设置所有空子 td 的样式。
现在我的代码将所有空的 TD 样式设置为灰色(见图)。
我只想设置第一行的样式,因为第一个 TD 包含文本。换句话说,我需要测试第一个 TD 是否包含文本,如果是,则在该行上添加灰色,如果它是空白的,则不要将颜色添加到空的 TD。
上面代码的jsbin:
仅当第一个 td 不包含文本时,我才需要一些 jquery 代码来设置所有空子 td 的样式。
现在我的代码将所有空的 TD 样式设置为灰色(见图)。
我只想设置第一行的样式,因为第一个 TD 包含文本。换句话说,我需要测试第一个 TD 是否包含文本,如果是,则在该行上添加灰色,如果它是空白的,则不要将颜色添加到空的 TD。
上面代码的jsbin:
选择行,检查第一个孩子是否为空,获取其匹配的兄弟姐妹:
$('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");
显然我把它弄反了!
我希望我
通过 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");
问题有点不清楚是要在第一个元素不为空时更新整个表,还是要更新每个匹配的行。对于整个表,你可以试试这个:
$("td:first:not(:empty)")
.closest("table")
.find("td[class*='_crew']:empty")
.css("background", "#DDCEC0");
从描述来看,其他答案似乎错过了他希望在第一个元素不为空时应用它的事实。