Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 手风琴-打开另一个项目时关闭一个项目_Javascript_Html_Onsen Ui_Onsen Ui2 - Fatal编程技术网

Javascript 手风琴-打开另一个项目时关闭一个项目

Javascript 手风琴-打开另一个项目时关闭一个项目,javascript,html,onsen-ui,onsen-ui2,Javascript,Html,Onsen Ui,Onsen Ui2,我想在另一个项目打开时自动关闭一个项目,因此在任何时候只有一个项目打开 HTML <ons-list-item tappable class="accordion" onclick="fn.toggle(this)">List 1</ons-list-item> <div class="panel"> <ons-list-item tappable>Item 1</ons-list-item> <ons-lis

我想在另一个项目打开时自动关闭一个项目,因此在任何时候只有一个项目打开

HTML

<ons-list-item tappable class="accordion" onclick="fn.toggle(this)">List 1</ons-list-item>
  <div class="panel">
    <ons-list-item tappable>Item 1</ons-list-item>
    <ons-list-item tappable>Item 2</ons-list-item>
  </div>
答案是:

window.fn = {};
window.fn.toggle = function(el) {
  var elems = document.querySelectorAll(".accordion.active");
[].forEach.call(elems, function(els) {
  if (el != els) {
  els.classList.toggle("active");
    els.nextElementSibling.classList.toggle("show");
  }
});
    el.classList.toggle("active");
    el.nextElementSibling.classList.toggle("show");
}

我不确定是否只使用JavaScript是一种要求,如果不是的话,看看快速而肮脏的方法是再次单击关闭所有面板,然后只打开单击的面板。不会影响已经关闭的面板。下面是我在互联网站上找到的一个快速示例,看看是否可以在其中找到答案。
window.fn = {};
window.fn.toggle = function(el) {
  var elems = document.querySelectorAll(".accordion.active");
[].forEach.call(elems, function(els) {
  if (el != els) {
  els.classList.toggle("active");
    els.nextElementSibling.classList.toggle("show");
  }
});
    el.classList.toggle("active");
    el.nextElementSibling.classList.toggle("show");
}