微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用jquery获取最后一个通用子节点?

我有大约4000个网站,导航html有所不同,但是最终的子节点总是一个基于文本的节点,而且html是如何布局的.

基于以下html示例,我将如何获取每个li或a或div的最后一个子节点

<!-- want to be able to get each span and its text -->
<ul id="nav">
  <li><a href="#"><span>Menu Item</span></a></li> 
  <li><a href="#"><span>Menu Item</span></a></li>
  <li><a href="#"><span>Menu Item</span></a></li>
</ul>

<!-- want to be able to get each a and its text -->
<ul id="nav">
  <li><a href="#">Menu Item</a></li> 
  <li><a href="#">Menu Item</a></li>
  <li><a href="#">Menu Item</a></li>
</ul>

<!-- want to be able to get each a and its text -->
<div id="nav">
  <div><a href="#">Menu Item</a></div> 
  <div><a href="#">Menu Item</a></div>
  <div><a href="#">Menu Item</a></div>
</div>

<!-- want to be able to get each a and its text -->
<div id="nav">
  <a href="#">Menu Item</a>
  <a href="#">Menu Item</a>
  <a href="#">Menu Item</a>
</div>

这些只是导航在一些网站中实现的一些方法,通常都有一个根元素,其中的id为nav,后面是一组可以具有孙子和更深的孩子.

我不想为每个人写一个单独的选择器,所以我试图找到一个通用的方式来对#nav中的第一个孩子进行每个操作,然后找到包含一些文本的特定元素的最后一个孩子.

到目前为止,我只能设法编写任何需要每种导航类型的自定义选择器的东西,所以我怕我没有任何代码开始发布.

有没有人有任何想法他们如何找到这些最终的孩子与jquery?

解决方法

单一语句/选择器最简单的方法
$("#nav").children().each(function(i,item) {
    alert($(item).find(':not(:has(*))').text());
});

JSfiddlehttp://jsfiddle.net/qUx4A/

一点解释:

> $(“#nav”).children().each() – 为#nav元素中的每个元素(对于每个li,a,div ….)
>:has(*) – select element,that have any child element
>:not(:has(*)) – 负的2.(选择没有任何子元素的元素) – 最内在的
> .text() – 这样最内在元素的文本内容

希望,这不够,我不知道我可以更准确地解释它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐