使用jquery在很多UL和LI中找到最深的LI

时间:2013-08-07 17:31:28

标签: jquery list tree html-lists

所以有这棵树。它是使用PHP从MySQL数据库编译的。 问题是我想找到所有没有UL的LI和更多的LI ....

示例:http://i.stack.imgur.com/Pet8Z.jpg

在示例中,我标记了应该使用jquery选择的LI,因为他们没有任何孩子,这就是我想要的。

基本上它只是一个由类别组成的树,但如果最深的类别没有任何子项,则应将其视为项目,我希望jquery找到那些没有任何子项的项目。

这是整棵树:http://jsfiddle.net/trueskillz/qnRpj/1/

我可以做这样的事情(下面的代码)并检查它是否有孩子,然后让它的背景为红色(例如),这就是我如何找到'项目'而不是'类别',但那里必须比这更简单....

    $("#parttree ul").each(function(){
      $(this).find("li").each(function(){
          $(this).find("ul").each(function(){
              $(this).find("ul").each(function(){
                 $(this).css("background-color","red");
              });
          });
      });
    });

这不是一个想找到这个列表中的项目的方式......所以我希望有一个更简单的方法......

2 个答案:

答案 0 :(得分:3)

有几个选择:

var $leaves = $('#parttree li').filter(function() {
    return !$(this).has('ul');
});

var $leaves = $('#parttree li:not(:has(ul))');

var $leaves = $('#parttree li').filter(":not(:has(ul))");

var $leaves = $('#parttree li').not(":has(ul)");

答案 1 :(得分:0)

您的列表结构稍微偏离了一点。我建议尝试在此组织:http://tools.arantius.com/tabifier

您也不需要jQuery来执行此操作。你可以使用CSS。

#parttree li:last-child{
   background:red;}

但是只要删除你所拥有的其中一个,我就能得到一个近距离的比赛。 http://jsfiddle.net/gha8V/

我会在wordpress(或任何所见即所得)的可视化编辑器中写出ul,点击文本,复制它,然后用上面的tabifier工具最终组织它们html。

希望这有帮助。