jquery - 如果单击子项,如何防止动画?

标签 jquery html

我正在尝试制作一个简单的侧边栏菜单。这个想法是,当我点击一个项目时,我希望其他菜单项的子菜单到 slideUp,因此隐藏它们。这行得通。但是,如果单击子项,我不希望动画运行。

我的 HTML 看起来像这样:

<ul id="menu-work-sidebar" class="menu">
  <li id="menu-item-41" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-41">Landscape
    <ul class="sub-menu">
      <li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-work menu-item-58">Test1
      </li>
    </ul>
  </li>
  <li id="menu-item-42" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent menu-item-has-children menu-item-42"><a href="#">Portraits</a>
    <ul class="sub-menu">
      <li id="menu-item-57" class="menu-item menu-item-type-post_type menu-item-object-work current-menu-item menu-item-57">Test2
      </li>
    </ul>
  </li>
  <li id="menu-item-47" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-47">Still life
  </li>
</ul>

我的脚本是这样的:

$('#work-sidebar').on('click', '.menu-item-type-custom', function() {

    $(this).siblings().children('.sub-menu:visible').slideUp();
    $(this).children('.sub-menu').stop().slideToggle();
});

我已经为此奋斗了几个小时,但无论我做什么我都无法让它工作。我该如何解决这个问题?

最佳答案

你需要告诉 jquery 在每次单击菜单项时切换幻灯片,并且你需要告诉 jquery 在你单击子菜单项时停止事件传播:

$('#menu-work-sidebar > li').on('click', function() {
  $(this).siblings().children('.sub-menu:visible').slideUp();
  $(this).children('.sub-menu').stop().slideToggle();
});
$('#menu-work-sidebar > li > ul > li').on('click', function() {
  event.stopPropagation();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="menu-work-sidebar" class="menu">
  <li id="menu-item-41" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-41">Landscape
    <ul class="sub-menu">
      <li id="menu-item-58" class="menu-item menu-item-type-post_type menu-item-object-work menu-item-58">Test1</li>
    </ul>
  </li>
  <li id="menu-item-42" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent menu-item-has-children menu-item-42"><a href="#">Portraits</a>

    <ul class="sub-menu">
      <li id="menu-item-57" class="menu-item menu-item-type-post_type menu-item-object-work current-menu-item menu-item-57">Test2</li>
    </ul>
  </li>
  <li id="menu-item-47" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-47">Still life</li>
</ul>

关于jquery - 如果单击子项,如何防止动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30241968/

相关文章:

javascript - 访问动态表单数组 HTML/Bootstrap/Javascript

jquery - Bootstrap - 为较小的视口(viewport)更改 Affix 数据偏移

javascript - 从 jquery 中的所有后代中删除样式属性

javascript - Bootstrap 模式在长列表中的位置

javascript - 在页面中包含 html 文件而不应用原始页面 CSS/JS

asp.net - 如何从服务器端关闭 jQuery (iFrame) 厚盒?

javascript - 隐藏第一个子级中的上一个按钮

php - 另一个小正则表达式问题

Jquery,获取#000000 格式的.css "background-color"?

javascript - Tooltip 组件渲染但不可见,并且不是 z-index