javascript - 停止对此的点击操作

标签 javascript jquery

我正在使用 jQuery 做一个简单的常见问题解答 Accordion ,并且我正在尝试禁用对 this 的额外单击,因为当单击 this 时,它会再次向上滑动因为这是再次被点击的那个。

如何禁用单击或禁用单击按钮(被单击的按钮)后再次上下滑动的操作?

(function($) {
  $('.c-accordion__panel').hide();
  $('.c-accordion__heading').click(function() {
    $('.c-accordion__panel').slideUp('fast'); //slide up panel
    $(this).parent('div').children('.c-accordion__panel').slideDown('fast'); //slide down panel
  });
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="faqs" class="clearfix pb3">
  <div class="col-12">
    <h3 class="pb3">Colocation FAQ</h3>
    <div class="c-accordion">
      <div class="c-accordion__heading flex justify-between border">
        <h4>heading 1</h4>
        <i class="fas fa-chevron-right"></i>
      </div>
      <div class="c-accordion__panel active">
        <p>this one has active Mumblecore biodiesel semiotics vice, sustainable banh mi ennui irony vape waistcoat drinking vinegar banjo scenester put a bird on it kickstarter. Dreamcatcher forage tousled gluten-free, taiyaki 3 wolf moon truffaut. Next
          level vinyl kinfolk, beard fanny pack biodiesel pinterest cold-pressed tumeric venmo franzen affogato disrupt wolf 90's. </p>
      </div>
    </div>
    <div class="c-accordion">
      <div class="c-accordion__heading flex justify-between border">
        <h4>heading2</h4>
        <i class="fas fa-chevron-right"></i>
      </div>
      <div class="c-accordion__panel">
        <p>Mumblecore biodiesel semiotics vice, sustainable banh mi ennui irony vape waistcoat drinking vinegar banjo scenester put a bird on it kickstarter. Dreamcatcher forage tousled gluten-free, taiyaki 3 wolf moon truffaut. Next level vinyl kinfolk,
          beard fanny pack biodiesel pinterest cold-pressed tumeric venmo franzen affogato disrupt wolf 90's. </p>
      </div>
    </div>
    <div class="c-accordion">
      <div class="c-accordion__heading flex justify-between border">
        <h4>heading3</h4>
        <i class="fas fa-chevron-right"></i>
      </div>
      <div class="c-accordion__panel">
        <p>Mumblecore biodiesel semiotics vice, sustainable banh mi ennui irony vape waistcoat drinking vinegar banjo scenester put a bird on it kickstarter. Dreamcatcher forage tousled gluten-free, taiyaki 3 wolf moon truffaut. Next level vinyl kinfolk,
          beard fanny pack biodiesel pinterest cold-pressed tumeric venmo franzen affogato disrupt wolf 90's. </p>
      </div>
    </div>
  </div>
</section>

最佳答案

单击的元素是 .c-accordion__heading,要调用 slideUp 的元素是 .c-accordion__panel,即下一个 sibling 。所以 您可以在调用 slideUp 之前添加 .not($(this).next()):

(function($) {
  $('.c-accordion__panel').hide();
  $('.c-accordion__heading').click(function() {
    $('.c-accordion__panel').not($(this).next()).slideUp('fast'); //slide up panel
    $(this).parent('div').children('.c-accordion__panel').slideDown('fast'); //slide down panel
  });
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="faqs" class="clearfix pb3">
  <div class="col-12">
    <h3 class="pb3">Colocation FAQ</h3>
    <div class="c-accordion">
      <div class="c-accordion__heading flex justify-between border">
        <h4>heading 1</h4>
        <i class="fas fa-chevron-right"></i>
      </div>
      <div class="c-accordion__panel active">
        <p>this one has active Mumblecore biodiesel semiotics vice, sustainable banh mi ennui irony vape waistcoat drinking vinegar banjo scenester put a bird on it kickstarter. Dreamcatcher forage tousled gluten-free, taiyaki 3 wolf moon truffaut. Next
          level vinyl kinfolk, beard fanny pack biodiesel pinterest cold-pressed tumeric venmo franzen affogato disrupt wolf 90's. </p>
      </div>
    </div>
    <div class="c-accordion">
      <div class="c-accordion__heading flex justify-between border">
        <h4>heading2</h4>
        <i class="fas fa-chevron-right"></i>
      </div>
      <div class="c-accordion__panel">
        <p>Mumblecore biodiesel semiotics vice, sustainable banh mi ennui irony vape waistcoat drinking vinegar banjo scenester put a bird on it kickstarter. Dreamcatcher forage tousled gluten-free, taiyaki 3 wolf moon truffaut. Next level vinyl kinfolk,
          beard fanny pack biodiesel pinterest cold-pressed tumeric venmo franzen affogato disrupt wolf 90's. </p>
      </div>
    </div>
    <div class="c-accordion">
      <div class="c-accordion__heading flex justify-between border">
        <h4>heading3</h4>
        <i class="fas fa-chevron-right"></i>
      </div>
      <div class="c-accordion__panel">
        <p>Mumblecore biodiesel semiotics vice, sustainable banh mi ennui irony vape waistcoat drinking vinegar banjo scenester put a bird on it kickstarter. Dreamcatcher forage tousled gluten-free, taiyaki 3 wolf moon truffaut. Next level vinyl kinfolk,
          beard fanny pack biodiesel pinterest cold-pressed tumeric venmo franzen affogato disrupt wolf 90's. </p>
      </div>
    </div>
  </div>
</section>

关于javascript - 停止对此的点击操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59449401/

相关文章:

javascript - Mongoose promise 在某些条件下无法解决

javascript - HTML5 File API 中的 FileReader.readAsText 如何工作?

javascript - AngularJS 中的重型 Controller 通信

javascript - jQuery : prevent checkbox being unchecked

javascript - 在页脚加载延迟加载的button.js

javascript - 无法隐藏字段并根据选择填充字段

javascript - 如何在ajax done函数中检索函数变量

javascript - 两个节点之间的jquery DOM距离

javascript - iframe 父文档上的 jQuery 效果

jquery - 从 jQuery 中的回调函数引用对象