javascript - SlideUp() 运行两次

标签 javascript jquery

我正在使用 jQuery 创建一个多选项卡 Accordion 。 “Headline 1”面板工作正常,但在“Headline 2”面板上运行 SlideDown() 方法两次。我注意到的另一个小问题是,当我单击按钮/链接和面板向下滑动之间存在一些延迟。

你可以看一下这里的jsfiddle来测试一下,看看问题所在:

http://jsfiddle.net/3VzTj/1/

jQuery:

$(document).ready(function() {
  var class_link, class_div, content_div;
  var all_panels = $('article > div.row').not(':first-child');

  $(all_panels).hide();

  $('div.buttons a').click(function() {
    class_link = $(this).attr('class');
    class_div = class_link.match(/[^-]+$/);
    content_div = $(this).closest('article').find('div.' + class_div).parent();

    if ($(content_div).is(':visible')) {
      $(all_panels).slideUp();
    } else {
      $(all_panels).slideUp(function() {
        $(content_div).hide().slideDown();
      });
    }

    return false;
  });
});

HTML:

<section class="grid-container">
  <article>
    <div class="row clearfix">
      <div class="column half">
        <h2>Headline 1</h2>
      </div>
      <div class="column opposite half buttons">
        <a class="button-content1" href="#">Content 1</a>
        <a class="button-content2" href="#">Content 2</a>
      </div>
    </div>

    <div class="row clearfix">
      <div class="column full content1">
        <h1>Content 1</h1>
      </div>
    </div>

    <div class="row clearfix">
      <div class="column full content2">
        <h1>Content 2</h1>
      </div>
    </div>
  </article>


  <article>
    <div class="row clearfix">
      <div class="column half">
        <h2>Headline 2</h2>
      </div>
      <div class="column opposite half buttons">
        <a class="button-content1" href="#">Content 1</a>
        <a class="button-content2" href="#">Content 2</a>
      </div>
    </div>

    <div class="row clearfix">
      <div class="column full content1">
        <h1>Content 1</h1>
      </div>
    </div>

    <div class="row clearfix">
      <div class="column full content2">
        <h1>Content 2</h1>
      </div>
    </div>
  </article>
</section>

最佳答案

// replace
$(all_panels).slideUp(function() {
  $(content_div).hide().slideDown();
});

//with
$(all_panels).slideUp().promise().done(function() {
  $(content_div).hide().slideDown();
});

关于javascript - SlideUp() 运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452268/

相关文章:

javascript - 为什么 javascript 中的 slice() 和 substr() 方法对正则表达式不起作用?

javascript - 同位素 - 使用 URL 哈希进行过滤

javascript - 为什么javascript数组中没有直接的 "remove"方法?

PHP:如何从 $.post 请求返回数据作为响应?

javascript - JS中根据背景颜色切换元素颜色

javascript - 如何使用 v-if 检查 .vue 中的 vue 对象是否为空

javascript - Backbone 事件并不总是发生在 `el` 上

javascript - OnClick 不适用于 PHP 创建的复选框

javascript - 如何将ajax响应/结果放入变量php

javascript - 使用javascript移动li元素