【问题标题】:Accordion with multiple links具有多个链接的手风琴
【发布时间】:2015-01-14 13:47:37
【问题描述】:

我正在使用这篇 CSS-Tricks 文章并将其转换为 UL > LI 而不是 DT > DD 方法。我只想让粉色框在点击时显示子链接。

由于某种原因,虽然我无法让它工作。我在这里创建了一个 jsFiddle(点击粉色框):

//Accordion
	(function($) {
	    
	  var allPanels = $('ul.sub-level').hide();
	    
	  $('.click-me').click(function() {
	    allPanels.slideUp();
	    alert('slide up');
        // Problem line  
	    $(this).parent().next().slideDown();
	    return false;
	  });
	
	})(jQuery);
ul { list-style: none; padding:0; margin:0; width: 400px; }
ul li { position:relative; background: #fafafa; margin-bottom:3px; height:20px; }
ul li > ul { margin-left: 30px; background: #e3e3e3; }

.click-me {  display:block; width: 20px; height: 20px; position: absolute; top:0; right:0; background: #e4f; cursor: pointer;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
    <li><a href="#">Link somewhere</a></li>
    <li><a href="#">Link somewhere</a></li>
    <li class="test">
        <a href="http://google.com">Link somewhere</a>
        
        <!-- I want to reveal accordion using this span tag -->
        <span class="click-me"></span>
        <!-- /end -->
        
        <ul class="sub-level">
            <li><a href="#">Link 1</a></li>
            <li><a href="#">Link 2</a></li>
            <li><a href="#">Link 3</a></li>
            <li><a href="#">Link 4</a></li>
        </ul>
      <li><a href="#">Link somewhere</a></li>
    </li>
</ul>

http://jsfiddle.net/ndczc728/1/

问题是这样的(我认为):

// Problem line  
$(this).parent().next().slideDown();

有人吗?

【问题讨论】:

  • 您能否详细说明一下预期和实际行为?

标签: javascript jquery css accordion next


【解决方案1】:

您不需要使用父级。您还必须从 li 元素中删除固定高度:

//Accordion
(function($) {

  var allPanels = $('ul.sub-level').hide();

  $('.click-me').click(function() {
    allPanels.slideUp();
    // Problem line  
    $(this).next().slideDown();
    return false;
  });

})(jQuery);
ul {
  list-style: none;
  padding: 0;
  margin: 0;
  width: 400px;
}
ul li {
  position: relative;
  background: #fafafa;
  margin-bottom: 3px;
}
ul li > ul {
  margin-left: 30px;
  background: #e3e3e3;
}
.click-me {
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  top: 0;
  right: 0;
  background: #e4f;
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li><a href="#">Link somewhere</a>
  </li>
  <li><a href="#">Link somewhere</a>
  </li>
  <li class="test">
    <a href="http://google.com">Link somewhere</a>

    <!-- I want to reveal accordion using this span tag -->
    <span class="click-me"></span>
    <!-- /end -->

    <ul class="sub-level">
      <li><a href="#">Link 1</a>
      </li>
      <li><a href="#">Link 2</a>
      </li>
      <li><a href="#">Link 3</a>
      </li>
      <li><a href="#">Link 4</a>
      </li>
    </ul>
    <li><a href="#">Link somewhere</a>
    </li>
  </li>
</ul>

【讨论】:

  • 当我运行此代码 sn-p 时,子级别下的项目不会向下移动。不确定这是 StackOverflow 问题还是代码问题。
  • 再次检查我的更新代码并附上评论。那是因为你使用的固定高度。
猜你喜欢
  • 2013-02-06
  • 2018-11-24
  • 2017-06-12
  • 1970-01-01
  • 2013-02-03
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多