我有一个这样的清单。
在每个 .list 项中都有一个 html 按钮:
<div class="list">
<button>.list</button>
</div>
此外,每个项目都可以在一个.bloc元素内
<div class="list"><button>.list</button></div>
<div class=bloc>
<div class="list"><button>.list</button></div>
</div>
当我单击按钮时,我希望前一个 .list 项具有 .active 类,如下所示:
嗯,用 jquery 很容易,我已经做到了,它工作得很好:
$('.list button').on('click', function() {
$(this).closest('.list').prev('.list').addClass('active');
});
但我有一些具体情况:有时列表项可以隐藏,隐藏类的列表不能有 .active 类:
或者更复杂。您必须逐个增加每个项目,并将活动类放在没有隐藏类的第一个:
我为没有隐藏类的物品做了机制,但我担心我走错了方向,因为案例的数量越来越多。没有更聪明的方法吗?:o
$('.list button').on('click', function() {
if ($(this).closest('.list').prev().length === 0) {
if ($(this).closest('.bloc').length) {
$(this).closest('.bloc').prev('.list').addClass('active');
$(this).closest('.bloc').prev('.bloc').find('.list:last-child').addClass('active');
} else {
$(this).closest('.list').next('.list').addClass('active');
}
}
if ($(this).closest('.list').prev('.bloc').length) {
$(this).closest('.list').prev('.bloc').find('.list:last-child').addClass('active');
}
$(this).closest('.list').prev('.list').addClass('active');
}








