You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问题:已展开的jQuery Accordion点击自身无法关闭,需修复

实现Accordion点击自身可关闭的功能

当前你的Accordion组件仅支持点击其他Accordion来关闭已展开项,要实现点击已展开项自身也能关闭的效果,只需在点击事件中增加状态判断逻辑即可。

修改后的代码如下:

$(document).ready(function() {

  var accordionEntries = document.querySelectorAll('.accordion-entry');
  var accordionImages = document.querySelectorAll('.accordion-image');

  for (var i = 0; i < accordionEntries.length; i++) {
    accordionEntries[i].dataset.target = 'accordion-image-' + i;
    accordionImages[i].classList.add('accordion-image-' + i);
  }

  $(document).on('click', '.accordion-header', function() {
    var parent = $(this).closest('.accordion-entry');
    var targetImageClass = parent.data('target');
    
    // 判断当前Accordion是否处于展开状态
    if (parent.hasClass('accordion-open')) {
      // 已展开则移除类名,关闭当前项
      parent.removeClass('accordion-open');
      $('.' + targetImageClass).removeClass('accordion-open');
    } else {
      // 未展开则先关闭所有已展开项,再展开当前项
      $('.accordion-open').removeClass('accordion-open');
      parent.addClass('accordion-open');
      $('.' + targetImageClass).addClass('accordion-open');
    }
  })
})

关键改动说明:

  • 先获取当前点击项的父容器parent以及对应的图片容器类名
  • 新增状态判断:如果当前父容器已经带有accordion-open类(说明处于展开状态),则移除该类来关闭当前Accordion和对应图片区域
  • 如果当前项未展开,保持原有逻辑:先关闭所有已展开的Accordion,再展开当前选中项

内容的提问来源于stack exchange,提问作者Kim123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:45:31