【问题标题】:slideUp() slideDown() doesn't work properlyslideUp() slideDown() 不能正常工作
【发布时间】:2018-06-19 12:09:28
【问题描述】:

$(document).ready(function(){
  $('.outer').click(function () {

    $('.inner').slideUp();
    /*alert("I BIMS");*/
  });
});
* {
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

html, body {
  background: #0b2027;
  /*line-height: 18px;*/
  height: 100%;
  font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
}

a {
  text-decoration: none;
  color: #fff;
}

.btn-menu {
  top: 51px;
  display: block;
  padding: 20px;
  background: #23282d;
}

.btn-menu .icon {
  float: right;
}

.verticalMenu {
  padding-top: 40px;
  width: 20%;
  min-width: 300px;
  height: 100%;
  display: inline-block;
  /*line-height: 18px;*/
  background: #23282d;
}

.verticalMenu .menu {
  width: 100%;	
  height: 100%;
}

.verticalMenu ul{
  list-style: none;
}

.verticalMenu .menu li a{
  color: #fff;
  display: block;
  padding: 15px 20px;
}

.verticalMenu .menu .outer a:hover{
  background-color: #00b9eb;
  color: #fff;
}

.verticalMenu .menu .inner a:hover{
  color: #00b9eb;
}

.verticalMenu .menu .icon{
  font-size: 12px;
  line-height: 18px;
}

.verticalMenu .menu .icon.left{
  float: left;
  margin-right: 10px;
}

.verticalMenu .menu .icon.right{
  float: right;
  margin-left: 10px;
}

.verticalMenu .menu ul{
  /*display: none;*/
}

.verticalMenu .menu ul li a {
  background: #32373c;
  color: #e9e9e9;
}

.verticalMenu .menu .active > a{
  background: #1a95d5;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="verticalMenu">
  <!--<a href="" class="btn-menu">Menu<i class="icon fa fa-bars"></i></a>-->
  <ul class="menu">
    <li class="outer"><a href=""><i class="icon left fa fa-tachometer-alt"></i> Dashboard</a></li>
    <li class="outer"><a href=""><i class="icon left fa fa-folder"></i> Dokumentverwaltung <i class="icon right fa fa-chevron-down"></i></a></li>
      <ul>
        <li class="inner"><a href=""><i class="icon left fa fa-upload"></i> Upload Datei/Sammlung</a></li>
        <li class="inner"><a href=""><i class="icon left fa fa-plus-circle"></i> Dateil/Sammlung erstellen</a></li>
      </ul>
    <li class="outer"><a href=""><i class="icon left fa fa-key"></i>Rechteverwaltung <i class="icon right fa fa-chevron-down"></i></a></li>
      <ul>
        <li class="inner"><a href=""><i class="icon left fa fa-file"></i> Datei</a></li>
        <li class="inner"><a href=""><i class="icon left fa fa-users"></i> Gruppe</a></li>
        <li class="inner"><a href=""><i class="icon left fa fa-folder-open"></i> Sammlung</a></li>
      </ul>
    <li class="outer"><a href=""><i class="icon left fa fa-user"></i>Userverwaltung <i class="icon right fa fa-chevron-down"></i></a></li>
      <ul>
        <li class="inner"><a href="">User erstellen</a></li>
        <li class="inner"><a href="">User löschen</a></li>
        <li class="inner"><a href="">Gruppe erstellen</a></li>
        <li class="inner"><a href="">Gruppe löschen</a></li>
        <li class="inner"><a href="">User-Gruppe zuordnen</a></li>
        <li class="inner"><a href="">User-Gruppe löschen</a></li>
      </ul>
  </ul>
 </div>

我想要一个手风琴菜单。如果用户点击“外部”菜单的一个元素,它应该会成功,如下所示:

if(this submenu is closed){
   1. open it
   2. close the other submenu
} else
{
  do nothing
}

它甚至没有这样的反应。所以好像我用 .slideUp() 函数调用了错误的标签。如果我使用 slideUp() 或 slideDown() 没关系 - 请帮助:-)

【问题讨论】:

  • 现在发生了什么问题?

标签: javascript jquery html slidedown slideup


【解决方案1】:

把这个jQuery:

$(document).ready(function(){
   $('.outer').click(function () {
       $('.inner').slideUp();
       $(this).next().find('.inner').slideDown();
   });
});

它将向上滑动所有 '.inner' 类,然后它将使用 $(this) 选择器选择好的外部,选择后面的元素(我的意思是 ul),找到所有 '.inner' 类并将它们向下滑动。

检查这个 jsfiddle:jsfiddle

希望对你有所帮助。

编辑:如果您希望菜单在开始时被包装,您可以使用 Jquery 进行:

$(document).ready(function(){
   $('.inner').slideUp();
   $('.outer').click(function () {
       $('.inner').slideUp();
       $(this).next().find('.inner').slideDown();
   });
});

或使用 CSS :

.inner{
    display:none;
}

【讨论】:

  • 这几乎是完美的。我希望在开始时包含菜单。所以只需拨打电话: $('.inner').slideUp();在外部函数中。但如果你看的足够近,它会移动一点。这也是可变的吗?
  • 你是老板!非常感谢:-)
  • 很高兴它帮助了你^^
  • 即使知道问题已经解决了 Kevin,我还是再次遇到了这个侧边栏的侧边栏问题。我想要打开这个子菜单,它在浏览器中打开。即使打开了子页面,也总是打开子菜单非常烦人。认为这将适用于设置 id 还是?你能再帮我一次吗? :-)
  • 嘿,这里有一个快速解决方案可以帮助您:jsfiddle.net/mf3028j1/1,我只是将 margin-left 设置为 -300px,因为您的导航栏总是在 300px,就是这样!这确实是一个快速修复,我知道您可以找到更好的编码方式!希望对您有所帮助
猜你喜欢
  • 1970-01-01
  • 2011-06-30
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2017-03-17
相关资源
最近更新 更多