Я старался не изменять ваш HTML, если это возможно, чтобы вам не приходилось сталкиваться с головной болью при оформлении.К сожалению, это означает, что JS немного более жестко запрограммирован, чем мне хотелось бы.
HTML:
<div class="topCats">
<h4><a href="#" class="openBox">Most Searched Categories</a></h4>
</div>
<div id="topCatsContainer" class="accordianContent">
content 1
</div>
<div class="allCats">
<h4><a href="#" class="closed">All Categories</a></h4>
</div>
<div id="allCatsContainer" class="accordianContent">
content 2
</div>
HTML-код такой же, за исключением того, что я добавил класс вкаждый ваш контент div.
JS:
$('#allCatsContainer').css("display", "none");
$('.topCats h4 a, .allCats h4 a').click(function() {
var content = $(this).parent().parent().next();
if(content.is(':visible')) {
content
.slideUp(500)
.addClass('closed')
.removeClass('openBox');
} else {
content
.parent()
.find('.accordianContent:visible')
.slideUp(500)
.addClass('closed')
.removeClass('openBox');
content.slideDown(500).removeClass('closed').addClass('openBox');
}
});
В основном JS находит контент, соответствующий ссылке, по которой щелкнули.Если содержимое было видно, то оно просто закрывается.Если его не было видно, мы закрываем тот, который был виден, и открываем содержимое, по которому щелкнули.
Если вы заметили, я переключаю классы openBox
и closed
, которые могут быть избыточными, но я не былуверен, если ваш стиль опирался на это или нет.
В общем, эта функциональность может быть реализована многими способами, и если вы захотите немного изменить свой HTML, мы могли бы сделать сторону JS более презентабельной :) В противном случаеВы можете просто использовать эту реализацию и избежать головной боли от стиля.