【发布时间】:2019-10-21 09:55:18
【问题描述】:
考虑:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>Foo</td>
<td>
<p>
<span><input type="checkbox" disabled="disabled" checked="checked">1 </span>
<span><input type="checkbox" disabled="disabled"> 2</span>
<span><input type="checkbox" disabled="disabled"> 3</span>
</p>
</td>
</tr>
<tr>
<td>Bar</td>
<td>
<p>
<span><input type="checkbox" disabled="disabled" checked="checked"> A</span>
<input type="checkbox" disabled="disabled"> B
</p>
</td>
</tbody>
</table>
使用 jQuery,我如何只保留具有 input 和属性 checked 的 <span>?基本上,最后,我只想要以下 HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>Foo</td>
<td>
<p>
<span><input type="checkbox" disabled="disabled" checked="checked">1 </span>
</p>
</td>
</tr>
<tr>
<td>Bar</td>
<td>
<p>
<span><input type="checkbox" disabled="disabled" checked="checked"> A</span>
</p>
</td>
</tbody>
</table>
请注意,出于某种原因,Bar 的 B 故意不环绕 <span>(我没有编写 HTML)。此外,假设检查的输入将始终在<span> 内。
最后,我需要一个没有(匿名)函数的单行 jQuery 命令,因为我使用的工具只支持单行 jQuery 语句。我最终只想提取此 HTML 的.text(),因此我想删除未检查相应输入的文本。
我得到的最接近的是
$("table").find("p:has(input)").contents().not("span:has(input:not(:checked))").remove().end().html()(不起作用)
【问题讨论】: