首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在.contents()之后,jQuery的.end()不能正常工作吗?

在.contents()之后,jQuery的.end()不能正常工作吗?
EN

Stack Overflow用户
提问于 2019-06-06 06:11:03
回答 1查看 25关注 0票数 0

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>中除具有选中的<input><span>之外的所有内容。然后打印出修改后的超文本标记语言的.text()

我知道jQuery语句是部分正确的,因为b正确地选择了应该删除的两个选项,即13。只是不确定如何让jQuery只输出Foo 2

我假设.end()会“退出”.find(),但事实并非如此。我该如何纠正这一点,或者有没有更好的方法?

最后,我需要一个不带(匿名)函数的一行jQuery语句,因为我使用的工具只支持一行jQuery语句。嵌套是很好的,即$("foo").find($("bar"))。我最终只想提取这个超文本标记语言的.text(),因此我想删除其各自的输入未被选中的文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 06:48:56

我通过反复试验随机发现了这一点。结果是我需要三个.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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56468706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档