javascript - jquery在树中查找下一个/上一个
问题描述
给定如下结构:
<div class="tree">
<div class="item" />
<div class="item" />
<div class="item" />
<div class="item" />
<div class="group">
<div class="item" />
<div class="item" />
<div class="item" />
</div>
<div class="item" />
<div class="group">
<div class="item" />
<div class="item selected" />
<div class="item" />
<div class="item" />
</div>
<div class="group">
<div class="item" />
<div class="item" />
</div>
</div>
我希望能够转到三个中的下一个和上一个项目。我有以下js
//to go up
var currentSelected = $(".item.selected");
currentSelected.removeClass("selected");
currentSelected.prevAll(".item:first").addClass("selected");
//to go down
var currentSelected = $(".item.selected");
currentSelected.removeClass("selected");
currentSelected.nextAll(".item:first").addClass("selected");
但是,这不适用于组,如果我上去并且当前位于组的第一项,我想选择组之前的项目,或者当前组之前的组的最后一项。反之亦然。
有什么建议么?
解决方案
最好从 jQuery 集合中找到下一个/上一个项目:
var $items = $('.item');
然后,您应该遍历它们以找到当前选定的索引并根据它移动到您要查找的项目:
$items.each(function(index) {
var $item = $(this);
if ($item.hasClass('selected')) {
$item.removeClass('selected');
var $nextItem = $items.eq(index + 1); // to select the next one
$nextItem.addClass('selected');
}
});
推荐阅读
- reactjs - 在 Typescript 中为 React Bootstrap DropdownItem 正确声明回调方法
- java-8 - CompletableFuture - 如何在未来结果中使用局部变量
- css - 使用 Material UI 和 CSS 隐藏曲线标题下的抽屉
- amazon-web-services - 加速 AWS Lambda 执行
- flutter - 如何从用户那里获取正确的家庭住址?
- dll - 如何解决错误 0xc0000139
- python-3.x - “gym.envs.box2d”的 COLAB 上的 RL 问题没有属性“LunarLander”
- javascript - VueJS 中的路由验证
- python - 如何在python 3中打印红心
- c - 从“struct node”类型分配给“struct node *”类型时的类型不兼容