【问题标题】:Javascript: Can I query for only the next n elements after a certain class?Javascript:我可以只查询某个类之后的下 n 个元素吗?
【发布时间】:2021-07-07 01:15:15
【问题描述】:

JS 新手。有没有一种简单的方法可以只查询某个元素/类之后的下一个 n 元素数量?兄弟元素,而不是子元素。例如,假设我有这个 html:

<span>Empty</span>
<span>Empty</span>
<div class="start">Empty Block</div>
<span>Content 1</span>
<span>Content 2</span>
<span>Content 3</span>
<span>Content 4</span>
<span>Content 5</span>

我想执行 document.querySelect,但我只想恢复 &lt;div class="start"&gt; 之后的前 3 个跨度(因此,只有内容 1、内容 2 和内容 3)。在 JS 中是这样的:

startingDiv = document.getElementsByClassName('.start');
allSpansAfterDiv = $(".start").nextAll('span');
targetSpans = allSpansAfterDiv[0,3];

最后一行是我希望返回 div 下的前 3 个 span,但在控制台日志中它只返回括号中的最后一项,所以 [3],相当于 &lt;span&gt;Content 4&lt;/span&gt;在 HTML 中。

我试着看看我是否可以让这两个 jQuery 选项也能正常工作:

选项 1:

$('span:lt(4)');

选项 2:

$('span').slice(0,4)

但这些将针对页面上的所有跨度。我不知道如何仅在 &lt;div class="start"&gt; 之后开始计算跨度。

如何只选择&lt;div class="start"&gt; 之后的前 3 个跨度?

如果知道我在现实生活中试图用它做什么有帮助:

我有一个页面,上面有 20 篇博客文章,每篇文章都包含在 &lt;article&gt; 标记中。我想首先显示 5 个最近的帖子,您可以单击“加载更多”按钮来显示接下来的 5 个帖子。我想告诉加载更多按钮来获取接下来的 5 个&lt;article&gt; 元素并将它们从display: none 更改为display: block。现在,我想弄清楚的是如何定位按钮之后的下 5 篇文章。每次点击按钮在页面上的位置都会不断变化。

【问题讨论】:

    标签: javascript jquery next


    【解决方案1】:

    你在正确的轨道上。你可以slice()nextAll()返回的集合

    或在nextAll() 中使用:lt(3) 选择器

    对于“显示更多”,您可以使用 :gt() 隐藏大于阈值的那些,然后在您想要显示时使用 slice():lt() 过滤 :hidden

    $('.start').nextAll('span').slice(0,3).css('color','red')
    $('.start').nextAll('span:lt(3)').css('background-color','yellow')
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <span>Empty</span>
    <span>Empty</span>
    <div class="start">Empty Block</div>
    <span>Content 1</span>
    <span>Content 2</span>
    <span>Content 3</span>
    <span>Content 4</span>
    <span>Content 5</span>

    【讨论】:

    • 这就是我要找的!谢谢,我已经用targetSpans = $(".start").nextAll("span:lt(3)"); 测试了我的代码,效果很好!也感谢您对 :gt() 的建议。我没有想到这一点,但这应该很适合我的目的。我会玩弄它的。
    • 是的......你走在正确的轨道上,相信你会毫不费力地完成下一步
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2021-08-10
    相关资源
    最近更新 更多