javascript - 如何对除最后一个之外的所有 <li> 实现添加/删除类?

标签 javascript html css

我有一个列表 <li> <ul> 内的标签,我有一个 javascript 函数,当单击时将“事件”类添加到其中一个类并将其从其 sibling 中删除,我想将其实现到除最后一个 <li> 之外的所有类。

<ul class='tabs'>
   <li>Home</li>
   <li>About</li>
   <li>Contact</li>
   <li>
     <form>
       <input type='text'/>
        <button></button>
     </form>
   </li>
</ul>

JS函数:

[].forEach.call(document.querySelectorAll('.tabs li'), function(ele) {
        ele.addEventListener('click', function(e) {
            if(ele.nextSibling){
              document.querySelector(".tabs li.active").classList.remove("active");
              ele.classList.add("active");
            }
        });
    });

最佳答案

您可以使用slice方法。

const listItems = Array.from(document.querySelectorAll('.tabs li'));
const selectableListItems = listItems.slice(0, -1);

selectableListItems.forEach(function(ele) {
    ele.addEventListener('click', function(e) {
        if(ele.nextSibling){
          document.querySelector(".tabs li.active").classList.remove("active");
          ele.classList.add("active");
        }
    });
});

或者使用伪类调整查询选择器,以选择除最后一项之外的所有元素:

document.querySelectorAll('.tabs li:not(:last-child)');

关于javascript - 如何对除最后一个之外的所有 <li> 实现添加/删除类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675306/

相关文章:

javascript - html canvas在网页上的位置

html - -webkit (CSS3) 淡入淡出动画 - 包含 jsFiddle

javascript - 如何根据用户选择设置要显示的表单数量?

javascript - 我尝试在我的高图表中包含主题,但在网页上没有适用主题,只有图表可见

javascript - C3JS加载函数和点值

javascript - 无法解决 "Can' t read property X of null”错误

javascript - Jquery 在没有类时隐藏类

javascript - 使用 react 按时间间隔更改图像

html - 如何设计 Material 工具提示 Angular 7

html - 屏幕变小的表格如何创建滚动条?