3

代码:http ://codepen.io/anon/pen/sumIx

$('.module article').hide();
});
$('.module-content, .module-photo').click(function() {
  for (var i = 0; i < 5; i++) {
     $('.module article').slideUp();
  } $(this).parent().children('article').slideToggle('slow');
});

如果单击任何框,先前活动的 div 将按预期关闭。

当您尝试关闭同一个处于活动状态的 div 时,它会立即打开。如何保持其他所有内容相同但纠正行为以使其不会重新打开?

4

2 回答 2

7

试试这个:

$('.module-content').click(function() {
   var $this = $(this).closest('section').find('article');
   $('.module article').not($this).slideUp();
   $this.slideToggle('slow');
});

http://codepen.io/anon/pen/DBirp

于 2012-09-26T00:18:29.543 回答
4

jQuery 自然地迭代元素集合,因此在这种情况下你的循环是无关紧要的。这是注释的更新代码:

$('.module-content').click(function() {
    //stores a reference to the clicked section's article
    var article = $(this).parent().children('article');
    //hides all other articles
    $('.module article').not(article).slideUp();
    //toggles the clicked one
    article.slideToggle('slow');
});

http://codepen.io/anon/pen/dgJDr

于 2012-09-26T00:17:42.073 回答