javascript - 当同级节点处于事件状态时,将非事件节点返回到其原始顺序

标签 javascript html css

这里是初学者。因此,对于我的类 .active 我在 CSS 中将顺序设置为 -1,以便它成为顶部 div,它正确删除了该类,但我假设前一个 active 的顺序仍然是-1

const divs = document.querySelectorAll('.div');

toggleActive = () =>
{
    if (this.classList.includes("active"))
        this.classList.toggle("active");
    else
    {
        divs.forEach(x => x.classList.remove("active"));
        this.classList.toggle("active");
    }
}

divs.forEach(x => x.addEventListener("click", toggleActive));

基本上我有: div1 div2 div3 div4 div5 如果用户点击其中一个,结果应为 div4 div1 div2 div3 div5

再次点击应该会出现结果 div2 div1 div3 div4 div5 但我得到了 div4 div2 div1 div3 div5

CSS:

.active
{
    order: -1;
}

最佳答案

如果您想继续使用您的代码,您需要按照以下方式执行此操作。

const divs = document.querySelectorAll('.div');

function toggleActive() {
if (this.classList.contains("active"))
        this.classList.toggle("active");
    else
    {
        divs.forEach(x => x.classList.remove("active"));
        this.classList.toggle("active");
    }
}

divs.forEach(x => x.addEventListener("click", toggleActive));

说明:

  1. 您不能使用箭头函数来绑定(bind)“this”,因此您需要使用常规函数。引用链接,can you bind 'this' in an arrow function

  2. 您需要使用contains而不是includes

我已经添加了代码片段,希望对您有所帮助。

const divs = document.querySelectorAll('.div');

function toggleActive() {
if (this.classList.contains("active"))
        this.classList.toggle("active");
    else
    {
        divs.forEach(x => x.classList.remove("active"));
        this.classList.toggle("active");
    }
}

divs.forEach(x => x.addEventListener("click", toggleActive));
.active
{
    order: -1;
}

div.active{
  color: darkgray;
}
<div class="div">
1. One
</div>
<div class="div">
2. Two
</div>
<div class="div">
3. Three
</div>

关于javascript - 当同级节点处于事件状态时,将非事件节点返回到其原始顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60689464/

相关文章:

javascript - data-url 属性在 jquery mobile 中有什么作用?

css - 在less中将伪类添加到父祖先(选择器)

javascript - 如何更改 JSF 表中的链接颜色

javascript - 使用 jQuery 但具有同一类的多个元素设置元素的 html 内容

javascript - 如何在用户单击提交按钮后立即创建图形页面模式

php - Jqgrid - 鼠标单击不选择行

javascript - 使用 JavaScript 创建 MDL 复选框

javascript - jQuery 语法荧光笔不工作

javascript - JavaScript 中的断行问题?

javascript - 嵌入iframe-YouTube视频不循环播放