Select jQuery 中使用 nth-of-type 的前十个元素

Select first ten elements using nth-of-type in jQuery

我正在尝试定位我页面上 class 为 .lazy

的前十张图片

我正在使用 unveil 延迟加载图像,它会等待滚动加载图像,但您可以使用以下行触发所有图像加载:

$("img").trigger("unveil");

我只想触发前 10 个图像始终直接显示,所以我尝试了这个:

$("#portfolio .portfolio-item img.lazy:nth-of-type(-n+10)").trigger("unveil");

在 CSS :nth-of-type(-n+10) select 中是前十个匹配元素,但是当我在我的控制台上使用这个 jQuery

进行尝试时
$("img.lazy:nth-of-type(-n+10)")

..它 returns 每个 img 与 .lazy

的 class

我做错了什么?有没有办法 select 前十个而不是使用 jQuery 的 .eq?

让您了解我的标记:

<div class="portfolio">
     <div class="portfolio-item">
          <img class="lazy" src="item-1.jpg">
     </div>
     <div class="portfolio-item">
          <img class="lazy" src="item-2.jpg">
     </div>
     <div class="portfolio-item">
          <img class="lazy" src="item-3.jpg">
     </div>
     <div class="portfolio-item">
          <img class="lazy" src="item-4.jpg">
     </div>
     etc... (there 20 items in total)
</div>

问题是每个 img 嵌套在一个单独的父级中吗?

您可以使用 lt select 或 select 前 n 个元素。

Select all elements at an index less than index within the matched set.

$("#portfolio .portfolio-item img.lazy:lt(10)").trigger("unveil");

Demo

您也可以使用slice()。从某种意义上说,切片更强大,您可以在一系列元素之间应用属性

$("#portfolio .portfolio-item img.lazy").slice(0,10).trigger("unveil");

这是一个代码片段:

$(document).ready(function() {
  $('div').slice(2, 5).css('background-color', 'red');
});
div {
  border: 1px solid black;
  height: 50px;
  width: 50px;
  display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>