0

我已经看到了这个问题的很多次迭代,但没有解决我的特定问题。

单击h3触发以在下面的链接列表上切换可见性的触发器时会出现问题。选择器和行为工作正常,显示隐藏的项目并正确隐藏其他项目。然而,一旦标题被单击一次,之后必须单击两次才能执行切换。这是一个小烦恼,但我想要一个解决方案。

因此,单击一个标题会在它关闭时向下滑动,如果它打开则向上滑动,.active分别添加和删除类……一切都很好。

单击另一个标题也将正常运行,隐藏打开的列表并打开单击的列表。

但是,如果您返回第一个标题,以前打开但现在关闭,单击它不会启动切换。必须再次单击它。

简而言之,这就是问题所在。我对页面代码的访问权限有限,因此大多数遍历选择必须在 jQuery 中完成,并且标签已经到位。

这是有问题的页面:http: //queensvw.com/documents/stackoverflow

这是jQuery:

$(document).ready(function() {
  function hideAll() {
    $('#minutes_highlights .date_heading').nextAll('.document_listing').slideUp();
  }

  hideAll();

  $('#minutes_highlights .date_heading').click(function() {
    if ($(this).hasClass('active')) {
      $(this).removeClass('active');
      $(this).nextUntil('hr').slideUp();
    } else {
      $(this).addClass('active');
      hideAll();
      $(this).nextUntil('hr').slideDown();
    }
  });
});

我尝试根据其他线程添加 apreventDefault()和 a 。setTimeout()老实说,我不确定它们为什么重要,因为我没有对a.

关于如何避免第二次点击的任何想法?

4

1 回答 1

1

这是因为当您单击其他元素时,您并没有删除活动类。现在,我无法证明这将起作用,因为我无法对其进行测试,但我很确定您将else条件更改为:

else {
  $('.active').removeClass('active');
  $(this).addClass('active');
  hideAll();
  $(this).nextUntil('hr').slideDown();
}

它会起作用的。

于 2013-06-29T04:14:40.453 回答