javascript - Accordion 代码无法正常工作,如何解决?

标签 javascript jquery html css

我正在尝试为我的投资组合页面模板和我的网站制作自己的 Accordion 。 xtractweb.com一旦有人点击 accodion 相应的工作片段将显示等......现在我正在尝试这个演示但我卡在中间。 我目前使用的代码如下: HTML 代码片段:

<div class="accordion-content">
   <ul>
     <li class="current">
       <h3>Donec at neque eget lacus lobortis molestie</h3>
       <div class="content current">
           <p>Nulla risus orci, viverra nec lacinia at, aliquam vel justo. Phasellus felis purus, placerat vel augue vitae, aliquam tincidunt dolor. Sed hendrerit diam in mattis mollis. Donec ut tincidunt magna. </p>
       </div>
     </li>
     <li class="">
       <h3>Phasellus felis purus, placerat vel augue vitae</h3>
       <div class="content" style="display: none;">
          <p>Nulla risus orci, viverra nec lacinia at, aliquam vel justo. Phasellus felis purus, placerat vel augue vitae, aliquam tincidunt dolor. Sed hendrerit diam in mattis mollis. Donec ut tincidunt magna. </p>
       </div>
     </li>
 </ul>
</div>

这里是 jquery 代码:

$('.accordion-content ul li h3').click(function(){
    var parent = $(this).parent('li');
    if(parent.hasClass('current')){
        $(this).next('div').slideUp();
        parent.removeClass('current');
        //$(this).parent('li').children('.content').slideUp();
    }
    else
    {
        parent.siblings().children('div').stop(true,true).slideUp();
        parent.addClass('current');
        parent.siblings().removeClass('current');
        $(this).next('div').slideDown();
        $(this).parent('li').addClass('current');
        //$(this).parent('li').children('.content').slideDown();
    }
});

虽然我所有的 css 显示工作正常...问题是一旦我单击 h3 它显示 div 内容,但是一旦我单击另一个 h3 比显示的旧 div 快,它会破坏整个过程并且结果不显示如我所愿...有人建议我现在做什么或比这更简单的方法...? 这是 css 代码片段:

.accordion-content {
    li {
      margin-bottom: 10px;
      border: 1px solid #dedede;
      background: #ececec url("../images/plus-minus.png") no-repeat;
      background-position: 96% 45%;
      background-width: 8px;
      background-height: 10px ;
      &.current {
        background: #ececec url("../images/minus.png") no-repeat;
        background-position: 96% 11%;
      }
    }
    h3 {
      font-size: 16px;
      font-family: 'open sans', sans-serif;
      text-align: left;
      color: #2c2725;
      padding: 10px 0 10px 20px;
      &:hover {
        cursor: pointer;
      }
    }
    .content {
      width: 100%;
      background: #ffffff;
      padding: 10px 0 10px 0;
      text-align: center;
      display: none;
      text-align: left;
      padding: 15px;
      padding-bottom: 55px;
      p {
        font-size: 14px;
        line-height: 24px;
        color: #7f8281;
      }
    }
    .current {
      display: block;
    }
  }

问候

最佳答案

问题不在于我摔倒了,只要看看jsfidle中的代码片段http://jsfiddle.net/gkQ3Y/1/你的结果看起来很酷。你还想要什么?我觉得唯一的变化是,你应该添加

.stop(true,true)

让您的 Accordion 正确加载,因为您只需在加载之前点击它,结果看起来与您预期的不同。 因此,您的新代码片段将如下所示:

 $('.accordion-wrapper .accordion-content ul li h3').click(function(){

    var parent = $(this).parent('li');
    if(parent.hasClass('current')){
        $(this).next('div').stop(true,true).slideUp();
        parent.removeClass('current');
        //$(this).parent('li').children('.content').slideUp();
    }
    else
    {
        parent.siblings().children('div').stop(true,true).slideUp();
        parent.addClass('current');
        parent.siblings().removeClass('current');
        $(this).next('div').stop(true,true).slideDown();
        $(this).parent('li').addClass('current');
        //$(this).parent('li').children('.content').slideDown();
    }
});

我希望现在一切都很好,你的整个代码足以完成这项工作,而现在只需这两行就可以完成剩下的工作。 问候

关于javascript - Accordion 代码无法正常工作,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21871944/

相关文章:

javascript - jquery 多个和变化的 id 选择器

jquery - 无法检查动态 HTML 复选框

javascript - jQuery 验证插件检查不同行之间的输入

javascript - 如何在 angularjs 中选择特定选项时显示 html 元素?

javascript - 获取 HTML 页面上 javascript 函数中的嵌入值

html - 删除包含列表的 div 中的额外空间

javascript - 在下一个上一个点击 jquery 上滑动 div block

html - 如何使用一个元素的孙子来切换前一个元素的孙子上的类?

javascript - “let block”仅在 Mozilla JavaScript 扩展中可用(使用 moz 选项)

javascript - 点击事件触发但ajax没有发生