.end () в jQuery не работает должным образом после .contents ()? - PullRequest
0 голосов
/ 06 июня 2019

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, поэтому я хочу удалить текст, соответствующий ввод которого не проверен.

1 Ответ

0 голосов
/ 06 июня 2019

Я случайно обнаружил методом проб и ошибок.Оказывается, мне нужно три .end() звонка.

Я думаю, один закрывает .not(), другой закрывает .contents, а последний закрывает .find() ???

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()
answer = $("table").clone().find("p:has(input)").contents().not("span:has(input:checked)").empty().end().end().end().text()

$("#a").text(a)
$("#b").text(b)
$("#c").text(c)
$("#d").text(d)
$("#answer").text(answer)
<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<br/>
ANSWER: <span id="answer"><span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...