Javascript 如何使用slidetoggle并一次只允许打开一个div?

Javascript 如何使用slidetoggle并一次只允许打开一个div?,javascript,jquery,slidetoggle,Javascript,Jquery,Slidetoggle,代码: $('.module article').hide(); }); $('.module content,.module photo')。单击(函数(){ 对于(变量i=0;i

代码:

$('.module article').hide();
});
$('.module content,.module photo')。单击(函数(){
对于(变量i=0;i<5;i++){
$('.module article').slideUp();
}$(this.parent().children('article').slideToggle('slow');
});
如果单击任何框,则先前活动的div将按预期关闭


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

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');
});
试试这个:

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

+1对于
.closest()
.find()
,如果OP在文章和部分/div之间添加更多标记,它们的弹性确实更大。我的答案保留了OP的更多原始代码
=]
@fabriciomatté你的答案很好,如果是这样的话,他可以发布另一个问题:),我开玩笑,+1用于使用
而不是
,以及注释良好的代码。
$('.module-content').click(function() {
   var $this = $(this).closest('section').find('article');
   $('.module article').not($this).slideUp();
   $this.slideToggle('slow');
});