我有几个 td ,其类别为 .container 。我想删除整个 td.container (如果它不包含链接 a.tickets )。在下面的示例中,这将是第二个td。
<td class="container">
<span>date info</span>
<a href="#" class="tickets">one</a>
</td>
<td class="container">
<span>date info</span>
</td>
我当时正在考虑使用以下方法检查该类是否存在,但无法正常工作。我需要添加什么来忽略那些具有 .ticket 类的内容?还可以.closest删除此对象或.parent吗?
if($("td.container a.tickets").length < 0)
{
something like .closest('td').remove();
}
答案 0 :(得分:3)
要实现此目的,您可以结合使用sed -ie -z 's/Marker\n/# Marker Comment\nMarker\n/g' myfile.txt
和:not()
选择器,如下所示:
:has()
$('td.container:not(:has(.tickets))').remove();
答案 1 :(得分:0)
您可以结合使用jQuery .filter()
和简单的querySelector()
:
$('td.container').filter((_, e) => !e.querySelector('a.tickets')).remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td class="container">
<span>date info</span>
<a href="#" class="tickets">one</a>
</td>
<td class="container">
<span>date info</span>
</td>
</tr>
</table>
编辑:由于 @Rory McCrossan 已经为您提供了更简单的答案,因此,这仅是Java脚本的答案,原因是:
document.querySelectorAll('td.container').forEach(e => {if(!e.querySelector('a.tickets')) e.remove();});
答案 2 :(得分:0)
普通JS,只是因为它不比jQuery难/读
https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove
document.querySelectorAll('td.container').forEach(function(ele) {
if (ele.querySelector('a.tickets') == null) ele.remove(); // not jQuery
});
<table>
<tr>
<td class="container">
<span>date info</span>
<a href="#" class="tickets">one</a>
</td>
<td class="container">
<span>date info</span>
</td>
</tr>
</table>