Показ/скрытие элемента
Добрый день!
Подскажите, пожалуйста, как сделать чтобы при нажатии на блок отображались только нужные блоки, которые находятся выше по DOM-дереву. Задача: При первом нажатии class="next" должно: - class="wrapper-1" стать display: block - скрыться class="inner-2-1-1" и показаться class="inner-2-1-2" и class="inner-top-1-1". При втором и далее нажатиях должно происходить также всё - пошагово отображая соответствующие следующие блоки и когда доходит до последнего class="inner-2-1-n" то последующий class="inner-top-1-m" должен скрываться. В итоге получается, например, у нас class="inner-2-1-1" - 10 блоков, а class="inner-top-1-1" на 2 меньше всегда. Если многого хочу, то можно сделать с костылем - class="inner-top-1-1" на 1 блок меньше:) Структура:
<div>
<div class="wrapper-1" style="dispaly:none">
<div class="inner-top-1-1" style="display:none"></div>
<div class="inner-top-1-1" style="display:none"></div>
<div class="inner-top-1-1" style="display:none"></div>
..............................................................................
<div class="inner-top-1-1" style="display:none"></div>
<div class="wrapper-2">
<div class="inner-2">
<div class="inner-2-1">
<div class="inner-2-1-1">
<div>
<div class="back"></div>
<div class="next"></div>
</div>
</div>
<div class="inner-2-1-1">
<div>
<div class="back"></div>
<div class="next"></div>
</div>
</div>
.........................................
<div class="inner-2-1-1">
<div>
<div class="back"></div>
</div>
</div>
$(document).on('click','.next',function(e){ //клик на кнопку "далее"
e.preventDefault();
var nS = $(this).parent().parent().parent().parent().parent().parent(); //выделяем родителя кнопки, который надо скрыть/показать
$('.wrapper-1').show(); //показывает нужный блок-обертку
nS.hide();
nS.next().show();
var nAs = $('.inner-top-1-1'); //блок, который нужно показать
if (nAs.css('display')==='block'){
nAs.hide();
nAs.next().show();
}
})
})
|
e.preventDefault(); - лишнее здесь.
var nS = $(this).parent().parent().parent().parent().parent ().parent(); - заменить на closest(selector). Можно просто по индексу работать? |
Цитата:
|
laimas,
Нельзя по индексу. Так бы через ссылки сделал closest(selector) не работает в моем случае, поэтому пришлось через parent().parent() делать |
рони,
опечатка:) но она только в тз попала сюда |
Цитата:
Цитата:
|
Цитата:
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.inner-2-1-1 {
display: none;
}
.inner-2-1-1.act {
display: block;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$(document).on('click','.next',function(e){
var index = $('.next').index(this);
$('.wrapper-1').show();
$('.inner-top-1-1').hide().eq(index++).show()
$('.inner-2-1-1').hide().eq(index).show()
})
$(document).on('click','.back',function(e){
var index = $('.back').index(this) ;
$('.wrapper-1').toggle(index > 0);
$('.inner-2-1-1').hide().eq(index--).show();
$('.inner-top-1-1').hide().eq(index).show();
})
});
</script>
</head>
<body>
<div class="wrapper-1" style="display:none"> wrapper-1
<div class="inner-top-1-1" style="display:none">1</div>
<div class="inner-top-1-1" style="display:none">2</div>
<div class="inner-top-1-1" style="display:none">3</div>
<div class="inner-top-1-1" style="dispaly:none">4</div>
</div>
<div class="inner-2-1-1 act">
<div>
<div class="next">next 1</div>
</div>
</div>
<div class="inner-2-1-1">
<div>
<div class="back">back 0</div>
<div class="next">next 2</div>
</div>
</div>
<div class="inner-2-1-1">
<div>
<div class="back">back 1</div>
<div class="next">next 3</div>
</div>
</div>
<div class="inner-2-1-1">
<div>
<div class="back">back 2</div>
<div class="next">next 4</div>
</div>
</div>
<div class="inner-2-1-1">
<div>
<div class="back">back 3</div>
</div>
</div>
</body>
</html>
|
рони,
ты - волшебник:) Я 3 дня голову ломаю, 7+ вариантов перепробовал (это только глобальных, а не правки по мелочам), в сумме наверное 500 строк кода написал, а в итоге всего 5 надо:( Подскажи еще, пожалуйста, как закодить кнопку "назад", чтобы в обратную сторону работало |
Цитата:
|
рони,
СПАСИБО!!!!!:dance: :thanks: |
| Часовой пояс GMT +3, время: 05:53. |