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 に答える