目标行中最后一个li?

问题描述 投票:13回答:13

我有一个简单列表,其中包含没有特殊类的列表项。

<ul>
  <li>item</li>
  <li>item</li>
  <li>item</li>
  <li>item</li>
  <li>item</li>
  <li>item</li>
  etc..
</ul>

前端看起来像这样:

“在此处输入图像说明”

我希望能够定位每行的最后一个li(以绿色突出显示的那些)。但是,我不确定这些li没有任何类,并且取决于用户的屏幕,因此可能是不同的li并排在最后。有没有一种方法可以定位连续的最后一个li

编辑:我认为有些混乱。所有li项目都在一个ul中。

javascript jquery css html-lists
13个回答
11
投票
function calculateLIsInRow() {
    var lisInRow = 0;
    $('ul li').each(function() {
        $(this).removeClass("back");
        if($(this).prev().length > 0) {
            if($(this).position().top != $(this).prev().position().top) {
               $(this).prev().addClass("back");
               // return false;
            }
            lisInRow++;
        } else {
            lisInRow++;   
        }
        if($(this).next().length > 0) {
        }
        else {
            $(this).addClass("back");
        }
    });
}

calculateLIsInRow();

$(window).resize(calculateLIsInRow);

-2
投票

您可以使用此

$("ul>li:last-child");

-2
投票

如果您知道每一行中有多少个元素,那么您可以使用此


-2
投票

您可以这样生下最后一个孩子

 $('ul li:last-child').css('color','red');

-2
投票

尝试一下:


4
投票

检查此功能(我曾经遇到过同样的问题,并且做了此功能,可以根据需要对其进行编辑):编辑可调整大小


3
投票

PURE CSS解决方案如何:


2
投票

你去。我知道做到这一点的唯一方法是使用jQuery计算容器ul的大小和内部元素的大小。

此解决方案假定以下条件:


2
投票

如果我对您的问题的理解是正确的,则每个li的宽度相同。

这是一个功能


1
投票

您可以使用最后一个li与边界的像素距离来做一些事情。偏移量获取从顶部到左侧的距离

var offset = $("#target").offset();
display("target is at " + offset.left + "," + offset.top + " of document");

1
投票

这是我的方法。我正在计算每行占据多少列,然后使用for循环应用背景色。

JS


1
投票

这里是一个解决方案,它查看每个元素的左偏移量,并与父偏移量和应用于li的任何边距进行比较。

通过查看左偏移量,如果它与父偏移量匹配(为边距调整),则前一个元素是行的结尾,UL的最后一个子元素也是。)>

它将类添加到最后一行,这将使您可以使用CSS进行所需的操作。它也将在触发窗口时调整窗口大小。


0
投票

var foo = document.getElementById('foo');
// yields: Third  (3)
console.log(foo.lastElementChild.textContent);
<ul id="foo">
  <li>First (1)</li>
  <li>Second (2)</li>
  <li>Third (3)</li>
</ul>

您可以使用此

$("ul>li:last-child");
© www.soinside.com 2019 - 2024. All rights reserved.