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

jQuery手风琴与href和可折叠

贺彬
2023-03-14

我正在使用href链接和可折叠标题制作手风琴菜单。问题是,当我单击子手风琴时,它会折叠父级。有什么解决方法吗?

<ul class="accordion">
  <li>
    <a class="acc-header" href="http://www.google.com">menu - level 1</a>
    <h3>+</h3>
    <ul class="accordion">
      <li>
        <a class="acc-header" href="http://www.google.com">menu - level 2-1</a>
      <h3>+</h3>
        <ul class="accordion">menu - level 3</ul>
      </li>
      <li>menu - level 2-2</li>
    </ul>
  </li>
</ul>

<script type="text/javascript">
  $(document).ready(function(){
    $( ".accordion" ).accordion({
      header: "h3",
      collapsible: true,
      heightStyle: "content",
      active: false,
      icons: false,
      animate: 200,
    });
  });
</script>

这是更新的版本,它正在工作。解决方案是使用“event.stop传播()”(如@Renan Arajo所述)并删除手风琴上的标题设置。

https://codepen.io/CocoSkin/pen/vRQyZP

共有1个答案

苏鸿羽
2023-03-14

由于从锚点元素中触发了click事件,相应的正在关闭。

使用停止传播来防止来自锚点的嗡嗡声:

$( ".accordion a" ).click(function(e) {
    e.stopPropagation();
});

我建议您阅读有关事件冒泡的内容,并检查stopPropagation方法。

 类似资料:
  • 我有一个自定义手风琴,像jQuery UI手风琴。我还试图使任何展开的项目可折叠(如果再次单击)。类似这样:https://jqueryui.com/accordion/#collapsible但是我不知道如何在当前扩展的项目上捕获另一个单击事件。有人能给我指一下正确的方向吗? 我的jQuery如下所示: 这是jsbin:http://jsbin.com/hazaxunuwa/edit?html,

  • 我正在使用jQuery手风琴来隐藏一些数据。 accordion标题是一个带有一些标题的表格。有一个标题,我不希望你点击它,因为手风琴事件会触发。 所以 手风琴是可折叠的,如果您单击Test2(类nofunction),手风琴事件不应触发。但是如果您单击Test或其他表头,手风琴应该会触发事件。 我可以添加这个功能吗? 更新测试http://jsfiddle.net/e3Q8d/,包括jQuery

  • 在手风琴菜单中单击href时,我在向两个元素添加类时遇到问题。删除“当前”类的实例,将“当前”类添加到单击的子菜单项及其父项。我已经让手风琴工作,只要我点击父菜单项,子菜单就会出现。在本例中,我的意思是我单击“第二个”并显示“项目2.1”和“项目2.1”。单击“第三个”和“第二个”,其子项将隐藏,而第三个及其子项将显示。我想做的是,单击一个子元素后,将“当前”添加到该子href元素及其父href(

  • 我尝试了以下代码,除了图标外,一切都很好。我试图在Google上找到一些解决方案,但我找不到我正在寻找的解决方案。 当我点击其中一个手风琴时,另一个手风琴应该折叠,当前点击的手风琴应该打开,同时fa图标应该根据手风琴的位置而改变。 这是我到目前为止已经尝试过的

  • 手风琴布局Accordion Layout 通常,手风琴布局可以这样实现: <div class="accordion-list"> <div class="accordion-item"> <div class="accordion-item-toggle">...</div> <div class="accordion-item-content">...

  • 手风琴效果其实就是通过JS改变元素的height,然后加上transition来让css动起来。 准备HTML结构 这里我们使用 dl , 因为 dt 刚好可以模拟标题, dd 模拟内容。 <div class="panel"> <dl> <dt>One Item</dt> <dd>One Item Content .</dd>