实现可折叠:如何确定哪个部分是打开的?

materialize collapsible: how to determine which section is open?

我有一个 materialize collapsible,它按预期工作。类似于:

<ul class="collapsible">
  <li>
   <div class="collapsible-header">Title1</div>
   <div class="collapsible-body" />
  </li>
  <li>
   <div class="collapsible-header">Title2</div>
   <div class="collapsible-body" />
  </li>
</ul>

在后面的过程中,当按下按钮时,我需要一个 javascript 函数来根据打开的部分修改其行为。

如何确定哪个部分是开放的?

我想一种可能是在隐藏元素中存储该部分被选中时的索引,但我不知道该怎么做。

Materializecss 将 active class 添加到一个打开的可折叠项目本身。因此您可以使用它来了解打开了哪个可折叠项目。

您可以使用此 jquery 代码:

$(document).on("click","ul.collapsible li", function(){

  var elem = document.querySelectorAll("ul.collapsible li");
  var index = "none"

  for (var i = 0; i < elem.length; i++) {
    if (elem[i].className == "active") {
        index = i;
    }
    document.getElementById("show").innerHTML = index;
  }

})

此代码为您显示打开的可折叠项目的索引。

这是完整的示例:jsFiddle