【问题标题】:Traversing to the last child element in a tree using jQuery selector使用 jQuery 选择器遍历树中的最后一个子元素
【发布时间】:2010-04-30 20:36:39
【问题描述】:
<div id="myDIV">
 <div>
  <span>
    <a href="#">Seek me!</a>
  </span>
 </div>
</div>

如何使用 jQuery 选择器找到 A 标记(不循环遍历 children()) 如果我只知道 myDIV id。

嗯,听起来确实有点尴尬。例如,我点击了#myDIV,我需要从最后一个子标签中获取文本。它可以是 A、span、div、p 等等。 myDIV 甚至不能有任何子元素。

打扰一下我的英语

【问题讨论】:

  • 如果有 2 个在同一深度怎么办?
  • @Nick Craver 大概永远只有一个

标签: jquery


【解决方案1】:

像这样:

$("#myDIV :not(:has(*))")

这将找到所有最后的“叶子”元素,如果需要,您可以限制为仅&lt;a&gt; 等。对于您的标记:

$("#myDIV :not(:has(*))").text() // "Seek me!"
$("#myDIV :not(:has(*))").length // 1

:empty 在这里不起作用(因为它有一个文本节点子节点),但是找到没有子元素的东西会,here's an example page showing this。

【讨论】:

  • @downvoter - 启发我们更好的方法?看到这里的所有其他答案都不起作用,我觉得有趣的是,你对唯一起作用的答案投了反对票。
  • @Nick:我会为你解决问题 :-) 不过,我不得不重新阅读这个问题几次。
  • 如果我使用 $(this) 来定义点击的元素,我该如何调整你的代码?谢谢
  • @dr3w - 您点击的是哪个元素?#myDIV?
  • @dr3w - 无论this 是什么,如果您有时甚至需要包含单击的元素,都可以使用$(this).find(":not(:has(*))"),然后:$(this).find(":not(:has(*))").andSelf().filter(":not(:has(*))")
【解决方案2】:

只是$('#myLink')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2011-06-04
    • 2019-10-01
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多