Поместите класс на все расширяемые div, скажем, expandable
.
<div id="rowOneLeftImageHidden" class="expandable">
This is information for the left image in the first row.
</div>
<div id="rowOneMiddleImageHidden" class="expandable">
This is information for the middle image in the first row.
</div>
<div id="rowOneRightImageHidden" class="expandable">
This is information for the right image in the first row.
</div>
. Вы можете свернуть их все, ссылаясь на класс сейчас, используя slideUp () и slideDown ().
$('#rowOneLeftImage').click(function(){
$(".expandable").slideUp();
$("#rowOneLeftImageHidden").slideDown();
});
$('#rowOneMiddleImage').click(function(){
$(".expandable").slideUp();
$("#rowOneMiddleImageHidden").slideDown();
});
$('#rowOneRightImage').click(function(){
$(".expandable").slideUp();
$("#rowOneRightImageHidden").slideDown();
Вероятно, вы могли бы избежать всего этого дублированного кода с небольшим творческим использованием элементов данных, например, если бы изображения включали элемент target-data с идентификатором div, который вы хотите, чтобы они расширили, тогда вы не захотитене нужно писать n функций для n изображений.
Чтобы подождать, пока они не закроются, перед открытием вы можете использовать задержку, или вы можете сделать
$(".expandable").slideUp(function () {
// this is called once the animation completes
if ($(this).is("#rowOneLeftImageHidden")) {
$(this).slideDown();
}
});