jquery - 使用 Jquery 删除不匹配的元素
问题描述
我h1
在每个表格上方都有一个标题,我想删除td.tablecells
日期与上面直接日期不匹配的任何地方h1.heading
。在第一个示例中,它将删除包含 Sat 19 Jun 的 td,因为它不匹配。
我在下面使用它,但它删除了 all td.table-cell
,我需要一些额外的东西来保持 td 与匹配日期。我很挣扎,因为 H1 坐在桌子外面,我似乎可以拿到最后一场比赛。
$(".date-span").filter(function() {
return $(this).text() !== $(".heading").text();
}).closest('.table-cell').remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 class="heading">Fri 18 Jun</h1>
<table>
<tr class="tablerow">
<td class="tablecell"><span class="date-span">Fri 18 Jun</span></td>
<td class="tablecell"><span class="date-span">Sat 19 Jun</span></td>
</tr>
</table>
<h1 class="heading">Fri 19 Aug</h1>
<table>
<tr class="tablerow">
<td class="tablecell"><span class="date-span">Fri 19 Aug</span></td>
<td class="tablecell"><span class="date-span">Sat 20 Aug</span></td>
</tr>
</table>
解决方案
使用 DOM 关系获取.prev()
兄弟,即测试条件下的父标题table
并且,使用正确的选择器 ie'.tablecell'
而不是'.table-cell'
$(".date-span").filter(function() {
return $(this).text().trim() !== $(this).closest('table').prev(".heading").text().trim();
}).closest('.tablecell').remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 class="heading">Fri 18 Jun</h1>
<table>
<tr class="tablerow">
<td class="tablecell"><span class="date-span">Fri 18 Jun</span></td>
<td class="tablecell"><span class="date-span">Sat 19 Jun</span></td>
</tr>
</table>
<h1 class="heading">Fri 19 Aug</h1>
<table>
<tr class="tablerow">
<td class="tablecell"><span class="date-span">Fri 19 Aug</span></td>
<td class="tablecell"><span class="date-span">Sat 20 Aug</span></td>
</tr>
</table>
根据评论更新的 HTML,您可以遍历到.closest('.timetable-outer')
然后使用.prev()
$(".date-span").filter(function() {
return $(this).text().trim() !== $(this).closest('.timetable-outer').prev(".heading").text().trim();
}).closest('.table-times').remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 class="heading">Wednesday 18 July</h1>
<div class="timetable-outer">
<div class="production">
<div class="title">A title</div>
<table class="timetable-inner">
<tbody>
<tr class="table-row">
<td class="table-times"> <span class="date-span">Wednesday 18 July</span> </td>
<td class="table-times"> <span class="date-span">Thursday July 19</span> </td>
</tr>
</tbody>
</table>
</div>
</div>
推荐阅读
- node.js - Expressjs - squirrelly - 我们如何在另一个模板中包含一个模板
- python-3.x - 获取 IndexError: list index out of range in line no. = 19?
- c++ - 管理器类和对象类之间的通信
- javascript - 无法在 React 中将数据发布到 mlab
- regex - 正则表达式匹配包含某些单词但不包含其他单词的字符串
- react-native - React-Native - 未找到名称“自定义标签”的视图配置
- php - 未定义索引:使用 ajax 和 php 上传时的文件
- javascript - Javascript:函数绑定不适用于调用者
- javascript - 用 SheetJS 转换后我不知道如何定义我的数组
- c# - C++ 和 C# 项目之间 Visual Studio 设置的差异