Jquery Next/NextAll/NextUntil 具有计数限制

标签 jquery siblings

我不知道这个问题的答案,这真的让我很恼火,我以为这很简单。我想从选定元素中获取下一个和上一个元素到一个限制(比如 2)。这是一个例子:

<ul>
<li>link 1</li>
<li>link 2</li>
<li>link 3</li>
<li>link 4</li>
<li class='active'>link 1</li>
<li>link 6</li>
<li>link 7</li>
<li>link 8</li>
<li>link 9</li>
</ul>

所以我想选择事件li之前的两个元素和之后的两个元素。我尝试过做类似的事情: $('li.active').nextAll(':eq(2)'); 然后使用 prevAll 将其添加到同一个元素中,但它选择一个元素 2 个兄弟元素离开而不是整个团队。

一定有一种我错过的简单方法,有什么建议吗?

注意我无法编辑 HTML,它是动态生成的。

最佳答案

(至少)有两种方法可以解决这个问题。可以链prevAll()nextAll()进入slice() ,然后使用 add()合并两组:

var $active = $("li.active");
var $around = $active.prevAll().slice(0, 2)
                     .add($active.nextAll().slice(0, 2));

或者您可以获取 index()的事件元素,使用 slice() 获取该索引周围的同级元素,然后使用 not() 过滤掉事件元素:

var $active = $("li.active");
var activeIndex = $active.index();
var $around = $active.siblings().addBack()
                     .slice(Math.max(0, activeIndex - 2), activeIndex + 3)
                     .not($active);

关于Jquery Next/NextAll/NextUntil 具有计数限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19244327/

相关文章:

jquery - 如何将搜索到的单词保留在第二个结果页面上

javascript - 如何在上次按键 5 秒后执行函数?

python-3.x - 如何获得BeautifulSoup标签的所有直接子级?

javascript - 定位具有相似类的每组元素的第一个同级元素

jquery - 无法选择 SPAN 同级

jquery - 如何用 jQuery 隐藏所有正确的 sibling ?

jquery - 使用 jquery 更改 div id

jquery - Div 继续显示为 block 而不是内联 block

javascript - 如何根据可见高度显示元素溢出计数?

javascript - 需要使用兄弟选择器切换/删除类