Я собрал скрипт для аккордеона, который работает довольно хорошо (не проверен на кросс-браузер) и позволяет получать доступ к большому содержимому внутри каждого ящика и видеть его на экране. Много раз аккордеоны открываются и вызывают проблемы с позиционированием после открытия. Во всяком случае, код, который я использую, имеет активную функцию переключения и функцию прокрутки, вызываемую при нажатии.Аккордеонная функциональность
function toggleActive(link){ // Set anchor to active
if ($(link).hasClass("active")) {
$(link).removeClass("active");
} else {
$(link).addClass("active");
};
};
function scrollToElement(selector, time, verticalOffset) { // param 1 = id, param 2 = speed
time = typeof(time) != 'undefined' ? time : 1000;
verticalOffset = typeof(verticalOffset) != 'undefined' ? verticalOffset : 0;
element = $(selector);
offset = element.offset();
offsetTop = offset.top + verticalOffset;
$('html, body').animate({scrollTop: offsetTop }, time);
}
$('#accordion a').click(function(e) {
var link = '#' + event.target.id
$(".tab-content").slideUp();
$(".tab").removeClass("active");
toggleActive(link);
$(link).next().slideToggle("fast");
setTimeout(function() {
scrollToElement($(link), 500);
}, 500);
e.preventDefault();
});
Так при нажатии, все вкладки закрыты и неактивными, то целевой «ящик» открывается и становится активным. Если по какой-либо причине вы нажимаете уже «активный» ящик, он снова запускается через скрипт. То, что я хотел бы сделать, это поместить оператор IF, который определяет, что то, что вы только что нажали, уже открыто, а затем просто закройте этот ящик. Заранее спасибо. Я не знаю, почему это вызывает у меня головные боли.
Кажется, что синтаксис неверен в инструкции IF в кнопке. Отсутствует «)» где-то. Я обычно не вызываю функции в операторах IF, поэтому я не уверен. Благодаря! – user3817083
Nevermind Я исправил это. Спасибо, это работает! Ты да, человек! – user3817083
добро пожаловать, я рад, если это было полезно :) –