将每个顶级列表的绝对最后一个列表项存储在嵌套列表中

达斯汀

我有一个嵌套的HTML列表,并且正在尝试获取.last() <li>顶级列表<ul>

这就是翡翠的样子

#menu
  ul: li
    a(href='#') Work (Top Level List 1)
    ul: li
      a(href='#') Project 1
      ul: li
        a(href='#') Project 1.1
        ul: li
          a(href='#') Project 1.1.1
          ul: li
            a(href='#') Project 1.1.1.1
            ul
              li: a(href='#link') Project 1.1.1.1.1
              li: a(href='#link') Project 1.1.1.1.2
              li: a(href='#link') Project 1.1.1.1.3
            li: a(href='#link') Project 1.1.1.2
            li: a(href='#link') Project 1.1.1.3
          li: a(href='#link') Project 1.1.2
          li: a(href='#link') Project 1.1.3
        li: a(href='#link') Project 1.2
        li: a(href='#link') Project 1.3 <- (Last li of top level list)
    li
      a(href='#') Resume (Top Level List 2)
      ul
        li: a(href='#link') Resume 1
        li: a(href='#link') Resume 2
        li: a(href='#link') Resume 3 <- (Last li of top level list)
    li
      a(href='#') Contact (Top Level List 3)
      ul
        li: a(href='#link') Contact 1
        li: a(href='#link') Contact 2
        li: a(href='#link') Contact 3 <- (Last li of top level list)

<li>用这个jQuery(使用CoffeeScript)得到了想要的。

$li = $this.find('li')

$liLastChild = $li.find(':last-child').children('a')

$scope = $this.find($li).find($ul)
$scopeNot = $scope.find($li).find($ul)

$this.find($scope).not($scopeNot).each ->
  $(this).find($liLastChild).last().css('background', 'orange')

但我需要使用类似以下内容的选择器来检查这些选择器:

if $(this).is($orangeListItem)

当我拿出每个喜欢:

$this.find($scope).not($scopeNot)
  .find($liLastChild).last().css('background', 'orange')

jQuery在末尾获得了最后一个<li>,而不是将其范围限定为期望的<ul>

有没有更好的方法来做我想做的事情,最好不要做.each(),所以我可以将其存储到$orangeListItem

这是一个CodePen。

编辑:我中途解决了我的问题。我仍然愿意改善这一点。我不确定这是一个很好的解决方案。

我将每个循环存储在变量中,然后使用它:last来获取最后一个列表项。.last()由于某种原因将无法正常工作?如果:last在循环中添加,它也将不起作用

这就是每个循环现在的样子。

$lastLast = $this.find($scope).not($scopeNot).each ->
  $(this).find($liLastChild) # Gather items

$lastLast = $lastLast.find(':last') # Get last list item

$lastLast.css('background', 'orange') # Make them orange

这是更新的CodePen。

编码人

如果我理解正确,则可以使用以下方法:

var $targets = $('#menu > ul > li > ul > li:last-child').not(':has(ul)');

这会大量使用直接子选择器,然后使用jQuery的not()过滤器来排除任何顶级li元素(如果它们具有嵌套的ul)(例如,“ Project 1”)

您可以在jsfiddle上看到一个示例

编辑:

好吧,棘手的部分也正在获得“项目1.3”,或者无论第一个列表中的最后一个列表项目是否在“工作”中。我需要每个顶级列表的绝对最后一个li。

对不起,忽略了那个。我认为单个CSS选择器无法包含该项目。这个怎么样:

// This variable will store all target <li> as we find them
var $targets = $();

// Loop through each top level <li> to grab the last <li> nested within each
$('#menu > ul > li').each(function () {

    var $nested_li = $(this).find('li');

    // If any nested <li> are found then we want the last <li>
    if ($nested_li.length) {

        $targets = $targets.add($nested_li.last());
    }
});

// The $targets variable should now contain all relevant <li> items
$targets.css('background', 'orange');

我也更新了演示小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将最后一个列表项与右侧对齐

来自分类Dev

在React中仅渲染最后一个列表项

来自分类Dev

从DynamoDB中删除最后一个列表项?

来自分类Dev

将每个列表项复制到另一个列表项属性

来自分类Dev

将css类添加到列表项,但jQuery中的最后一个除外

来自分类Dev

如何为每个列表项生成一个列表

来自分类Dev

用另一个列表的每个连续项替换某些嵌套列表中的最后一项

来自分类Dev

使用Python中每个列表的最后一个元素

来自分类Dev

Haskell:创建列表中每个列表的最后一个元素的列表

来自分类Dev

如何从python复制列表列表而没有每个列表中的最后一个元素

来自分类Dev

将每个列表项一个接一个地传递到新线程

来自分类Dev

将列表的元素作为最后一个元素插入到python列表中的列表中

来自分类Dev

最后一个HTML列表项上的圆角底角?

来自分类Dev

最后一个HTML列表项上的圆角底角?

来自分类Dev

如何替换最后一个HTML列表项?

来自分类Dev

删除另一个列表中的列表项

来自分类Dev

Linq,将列表加入另一个列表中的最后一个项目

来自分类Dev

向AngularJS中的最后3个列表项添加一个类

来自分类Dev

如何选择在选定列表项之前的每个第一个父级列表项

来自分类Dev

将最后一个元素放在列表Erlang中

来自分类Dev

Python将列表中的最后一个元素分组

来自分类Dev

将最后一个元素放在列表Erlang中

来自分类Dev

单击另一个列表项中的一个列表项

来自分类Dev

如何创建一个Listview,以便单击每个列表项将打开不同的活动?

来自分类Dev

在PHP中创建一个顶级列表

来自分类Dev

为什么最后一个列表项在自定义列表中的行为有所不同?

来自分类Dev

如何定位覆盖列表项和无序列表中的最后一个锚点元素

来自分类Dev

仅顶级列表项

来自分类Dev

如果上一个列表项比列表项高,则如何使列表项中的文本居中对齐

Related 相关文章

  1. 1

    将最后一个列表项与右侧对齐

  2. 2

    在React中仅渲染最后一个列表项

  3. 3

    从DynamoDB中删除最后一个列表项?

  4. 4

    将每个列表项复制到另一个列表项属性

  5. 5

    将css类添加到列表项,但jQuery中的最后一个除外

  6. 6

    如何为每个列表项生成一个列表

  7. 7

    用另一个列表的每个连续项替换某些嵌套列表中的最后一项

  8. 8

    使用Python中每个列表的最后一个元素

  9. 9

    Haskell:创建列表中每个列表的最后一个元素的列表

  10. 10

    如何从python复制列表列表而没有每个列表中的最后一个元素

  11. 11

    将每个列表项一个接一个地传递到新线程

  12. 12

    将列表的元素作为最后一个元素插入到python列表中的列表中

  13. 13

    最后一个HTML列表项上的圆角底角?

  14. 14

    最后一个HTML列表项上的圆角底角?

  15. 15

    如何替换最后一个HTML列表项?

  16. 16

    删除另一个列表中的列表项

  17. 17

    Linq,将列表加入另一个列表中的最后一个项目

  18. 18

    向AngularJS中的最后3个列表项添加一个类

  19. 19

    如何选择在选定列表项之前的每个第一个父级列表项

  20. 20

    将最后一个元素放在列表Erlang中

  21. 21

    Python将列表中的最后一个元素分组

  22. 22

    将最后一个元素放在列表Erlang中

  23. 23

    单击另一个列表项中的一个列表项

  24. 24

    如何创建一个Listview,以便单击每个列表项将打开不同的活动?

  25. 25

    在PHP中创建一个顶级列表

  26. 26

    为什么最后一个列表项在自定义列表中的行为有所不同?

  27. 27

    如何定位覆盖列表项和无序列表中的最后一个锚点元素

  28. 28

    仅顶级列表项

  29. 29

    如果上一个列表项比列表项高,则如何使列表项中的文本居中对齐

热门标签

归档