jQuery-Accordion Как сделать скроллинг на открытую вкладку?
Как сделать скроллинг на открытую вкладку?
Пробовал получить позицию текущей вкладки и скроллить до неё, но почему-то не работает.
$(document).ready(function(){
$(".set > a").on("click", function(){
if($(this).hasClass('active')){
$(this).removeClass("active");
$(this).siblings('.content').slideUp(200);
}else{
$(".set > a").removeClass("active");
$(this).addClass("active");
$('.content').slideUp(200);
$(this).siblings('.content').slideDown(200);
}
var scrTop = $(this).offset().top;// получаем положение вкладки
$(document).scrollTop(scrTop); // пытаюсь скроллить на это значение
});
$(".set > a.activity").click();// одна вкладка открыта по умолчанию, имитация клика.
});
Разметка: <div class="accordion-container" role="tablist" aria-multiselectable="true"> <div class="set"> <a role="button" href="#">Panel header 1</a> <div class="content" role="tab"> <p>Panel text</p> </div> </div> <div class="set"> <a role="button" href="#">Panel header 2</a> <div class="content" role="tab"> <p>Panel text</p> </div> </div> <div class="set"> <a role="button" href="#">Panel header 3</a> <div class="content" role="tab"> <p>Panel text </p> </div> </div> </div> |
lipinart,
1. отменить переход по ссылке. 2. строка 11 $(this).siblings('.content').slideDown(200 сюда ваш скролинг); |
Да, заподозрил анкеры. Сделал как посоветовали:
$(document).ready(function(){
$(".set > a").on("click", function(event){
event.preventDefault();
if($(this).hasClass('active')){
$(this).removeClass("active");
$(this).siblings('.content').slideUp(200, function(){
});
}else{
$(".set > a").removeClass("active");
$(this).addClass("active");
$('.content').slideUp(200);
$(this).siblings('.content').slideDown(200);
}
});
$(".set > a.activity").click();
});
В итоге скроллить ничего не пришлось, все остается на своих местах. Спасибо! |
| Часовой пояс GMT +3, время: 07:42. |