a = $("table").clone().find("p:has(input)").contents().not("span:has(input:checked)").remove().end().text()
b = $("table").clone().find("p:has(input)").contents().not("span:has(input:checked)").text()
c = $("table").clone().find("p:has(input)").contents().not("span:has(input:checked)").empty().end().text()
d = $("table").clone().text()
$("#a").text(a)
$("#b").text(b)
$("#c").text(c)
$("#d").text(d)
<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">1</span>
<span><input type="checkbox" disabled="disabled" checked="checked">2</span>
<span><input type="checkbox" disabled="disabled">3</span>
</p>
</td>
</tr>
</tbody>
</table>
A: <span id="a"></span><br/>
B: <span id="b"></span><br/>
C: <span id="c"></span><br/>
D: <span id="d"></span><br/>
EXPECTED: Foo 2
Моя логика состоит в том, чтобы найти удалить все внутри <p>
ИСКЛЮЧИТЬ для <span>
, у которого отмечен <input>
.Затем распечатайте .text()
этого измененного HTML.
Я знаю, что оператор jQuery частично корректен, поскольку b
правильно выбирает два параметра, которые должны быть удалены, то есть 1
и 3
.Только не уверен, как сделать вывод jQuery только Foo 2
.
Я предполагаю, что .end()
"выйдет" из .find()
, но это не так.Как мне исправить это или есть лучший способ сделать это?
Наконец, мне нужно однострочный оператор jQuery без (анонимных) функций, так как инструмент, который я используюподдерживает только однострочные операторы jQuery.Вложенность в порядке, то есть $("foo").find($("bar"))
.В конце концов я просто хочу извлечь .text () этого HTML, поэтому я хочу удалить текст, соответствующий ввод которого не проверен.