У меня работает аккордеон, и он работает очень хорошо, когда вы спускаетесь по аккордеон, но по мере того, как вы возвращаетесь, это своего рода глупость.Навигация, чтобы настроить пользовательский jQuery аккордеон
Я хочу сделать это так, когда вы нажмете на мачту, он откроет содержимое внутри этого мачты и привяжет верхнюю часть страницы к вершине мачты. Я знаю, что мне нужно делать в псевдокоде, но я не уверен, что на самом деле делать с кодом.
Вот мой HTML:
<html>
<head>
<meta>
<title></title>
<link rel="stylesheet" href="made-insider.css">
</head>
<body>
<div class="accordion">
<div id="one" class="masthead"></div>
<div class="insider-info"></div>
<div id="two" class="masthead"></div>
<div class="insider-info"></div>
<div id="three" class="masthead"></div>
<div class="insider-info"></div>
<div id="four" class="masthead"></div>
<div class="insider-info"></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="made-insider.js"></script>
</body>
</html>
Вот мой JQuery:
$(function() {
//Checking the position of panels
var allPanels = $('.insider-info').hide();
//working accordion code -- needs to be smoother
$('.accordion > .masthead').click(function(event) {
if ($(this).hasClass('active')) {
$(this).removeClass('active')
.next(allPanels).slideUp(400);
} else {
var topPos = $(this).position();
$('.active').removeClass('active')
.next(allPanels).slideUp(400);
//if the previous accordion is open
$('body').animate({ scrollTop: topPos.top - 200}, 600);
//if the previous accordion is not open
//$('body').animate({ scrollTop: topPos.top}, 600);
$(this).addClass('active')
.next(allPanels).slideDown(400);
}
});
});
Я пытался что-то вроде
if ($(this).prev('.masthead').hasClass('.active')){
behavior
},
if ($(this).prev().prev().hasClass('.active'){
behavior
}
if ($(this).eq() < $('div.active').eq()){
behavior
}
, но ни один из них не работает. Какие-либо предложения??
ДА !! Большое спасибо за вашу помощь, это именно то, что я пытался сделать! – realjoet
Могу ли я спросить, что именно это делает? Супер счастлив, что это работает, просто любопытно, что он делает в этом случае, чтобы я мог учиться! – realjoet
Извините, я должен был бы высказать здесь замечание. Это просто проверка наличия активного элемента. Если в настоящее время нет открытой панели, мы не хотим вычитать 200 из topPos, так как 200 предназначен для учета высоты открытой панели над новой. – bowheart