当前位置: 首页 > 知识库问答 >
问题:

当同级节点处于活动状态时,将非活动节点返回到其原始顺序

田仲卿
2023-03-14

这里是初学者。因此,对于我的类.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;
}

共有1个答案

车峻熙
2023-03-14

如果你想继续使用你的代码,你需要按照下面的方式来做。

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));

说明:

>

  • 您不能使用箭头函数来绑定“this”,因此您需要使用正则函数来绑定“this”。参考链接,你能在箭头函数中绑定“this”吗

    您需要使用contains而不是includes

    我已经添加了代码片段,这样它可能会对您有所帮助。

    null

    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>

  •  类似资料:
    • 我正在寻找一种方法,显示一个div时,一个锚点被点击。我在我的页面上有一个HTML5/PHP表单,当提交时,它会将用户带着一条谢谢消息带到div中放置的锚,这是激活该链接的唯一方法。这是我试图显示的div: 当锚点处于活动状态时,是否有一种方法可以改变(可能使用CSS)显示:none?

    • 我是Kafka的初来乍到,有一些基本的怀疑。我试着做一个Kafka建立的多节点(主动-主动)。情况如下:- 运行单个zookeeper(端口:2181) 创办了三家Kafka经纪人(9092、9093、9094) 创建单个主题测试(分区:1,复制3) 使用代理列表启动生产者(9092,9093) 在9092、9093、9094上启动了使用者,但它们都在使用相同的主题。 现在我怀疑的是,当我从生产者

    • 那么我应该做些什么来实现这个目标呢?如有任何帮助/线索,请提前感谢

    • 我正在Android上使用Firebase云消息。 当应用程序位于前台时,我可以成功接收通知和数据消息 文档说明,如果在应用程序处于后台时收到通知消息,则Firebase将代表应用程序向系统托盘发送通知。这对我不起作用 如果发送了数据消息且应用程序位于后台,则会成功调用onMessageReceived方法 最麻烦的情况是,我强制停止应用程序,然后尝试发送通知或数据消息。在这种情况下,不会调用on

    • 我正在寻找实现这一点的一般设计: 我想注册到ActivityRecognition API,以便在此API不时调用的IntentService中接收定期更新,而我的应用程序中的所有其他内容都是完全非活动的(这里的目标是避免耗尽设备上过多的电池电量)。 问题是,通过新的ActivityRecognition API设计,它与GooglePlayServices客户端绑定,例如: 从逻辑上讲,如果创建

    • 问题内容: 从MDN for NodeList: 在某些情况下,NodeList是一个实时集合,这意味着DOM中的更改会反映在集合中。例如,Node.childNodes处于活动状态: 在其他情况下,NodeList是静态集合,这意味着DOM中的任何后续更改都不会影响集合的内容。document.querySelectorAll返回一个静态NodeList。 所以....有点烦!是否有任何关于哪些