【问题标题】:jquery get the last element at the end of a treejquery获取树末尾的最后一个元素
【发布时间】:2014-04-16 19:20:23
【问题描述】:

如果我有这样的结构:

<div>
  <div>
    <div>blah</div>
  </div>
</div>


<div>
  <div>
    <div>
      <div>blah</div>
    </div>
  </div>
</div>

是否有 jquery 可以针对最深的元素(blahs 所在的位置)?

【问题讨论】:

标签: jquery dom traversal


【解决方案1】:

这将选择没有任何子元素的任何内容:

http://jsfiddle.net/YWARr/

$('div:not(:has(*))')

【讨论】:

    【解决方案2】:
    $('div').each(function () {
        if ($(this).children().length == 0) {
            //do something
        }
    })
    

    【讨论】:

      【解决方案3】:

      一点递归的jQuery:

      $(document).ready(function(){
          alert(deepest($("div:first")).html());
      
          function deepest(f){
              if(f.find("div").length)return deepest(f.find("div"));
              else return f;
          }
      });
      

      从传递给 Deepest 的任何内容开始,获取第一个没有子元素的 DIV

      JSFiddle

      【讨论】:

      • 有趣的概念,但是你的实现不会起作用,因为f.find("div") 总是正确的,因为它只是一个 jQuery 对象,无论它是否有任何 DOM 元素。可以查看.length查看jQuery对象是否为空。
      • 我所做的只是在您的 HTML 中添加更多文本:jsfiddle.net/jfriend00/9cBNL/2。这个逻辑if(f.find("div")) 根本不会做你想做的事。
      • 它没有返回正确的答案。正确的答案是提醒blah,如下所示:jsfiddle.net/9cBNL/3。您实际上也没有递归。
      • 你是对的......我的立场是正确的......谢谢你的教训:)
      • 还有更多错误,递归实际上并没有进入递归。现在全部修复并正常工作。对于正在寻找递归解决方案的人:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 2012-04-02
      • 1970-01-01
      • 2015-02-10
      • 2010-11-30
      相关资源
      最近更新 更多