:最后一个与:最后一个子选择器

问题描述 投票:0回答:3

我注意到

$( 'filter:last' )
与 jQuery 中的
$( 'filter:last-child' )
不同。

我尝试了 jQuery 文档,但很难理解

:last
的额外用途以及它们存在的原因。

显然,

:last
是一个 jQuery 扩展,并不在 CSS 规范中。所以,我想到了它与传统的
:last-child
有何不同。另外,jQuery 中正好有一个
.last()
方法,据说比
$( 'filter:last' )
效率更高,那么
:last
选择器有什么用呢?

jquery jquery-selectors
3个回答
8
投票

它们非常相似。不同的是,如果你有类似的东西

<div>
  <p>hi</p>
  <p>bye</p>
</div>
<div>
  <p>hi</p>
  <p>bye</p>
</div>

$('p:last-child')
将选择两个
<p>bye</p>
元素,而
$('p:last')
将仅选择第二个元素。同样的事情也可以用
$('p').last()
完成,通过添加
:last
作为选择器 jQuery 允许将过滤器与
:last
一起使用,而不必使过滤器的参数成为函数。


2
投票

:last 选择器仅匹配单个元素:last-child 可以匹配多个元素:每个父元素一个。

请参阅下面的示例以获得更好的说明 -

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>last-child demo</title>
  <style>
 span.solast {
   text-decoration: line-through;
  }
 </style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
 </head>
<body>

<div>
 <span>John,</span>
 <span>Karl,</span>
 <span>Brandon,</span>
 <span>Sam</span>
</div>
 <div>
  <span>Glen,</span>
  <span>Tane,</span>
  <span>Ralph,</span>
  <span>David</span>
 </div>
<table>
  <tr><td>First Row</td></tr>
  <tr><td>Middle Row</td></tr>
  <tr><td>Last Row</td></tr>
</table>

<table>
  <tr><td>Second Table First Row</td></tr>
  <tr><td>Second Table Middle Row</td></tr>
  <tr><td>Second Table Last Row</td></tr> 
</table>


<script>
$( "div span:last-child" )
 .css({ color:"red", fontSize:"80%" })
 .hover(function() {
    $( this ).addClass( "solast" );
  }, function() {
    $( this ).removeClass( "solast" );
  });

$( "table tr:last" ).css({ backgroundColor: "yellow", fontWeight: "bolder" 
});
</script>

</body>
</html>

您可以看到在上面的代码中:last 选择器仅将一个 tr 的背景颜色更改为黄色,而不是两个 tr,这意味着 :last 仅选择单个元素。而 :last-child 将选择每个元素的最后一个子元素。


0
投票

这是针对 CSS 的:

使用 :last-child 与 :last-of-type 非常相似,但有一个关键区别:它不太具体。

:last-child 只会尝试匹配父元素的最后一个子元素,而 :last-of-type 将匹配指定元素的最后一次出现,即使它不是最后出现的HTML。

来源: https://css-tricks.com/almanac/selectors/l/last-child/

© www.soinside.com 2019 - 2024. All rights reserved.