Предыстория: я использую materialize JS для создания складных элементов div. При щелчке элемента div с классом складного заголовка происходит анимация скольжения вниз по родственному элементу div с классом складного тела, показывая содержимое сворачиваемого тела.
Что я пытаюсь сделать, так это то, что при нажатии на сворачиваемый заголовок браузер должен прокрутить до верхней части этого div, чтобы содержимое было полностью видно пользователю. Я использовал событие щелчка, которое отлично работает на первом складном элементе. Но затем, если у вас есть открытый складной элемент, и вы нажимаете на другой, чтобы открыть его, он не прокручивается до верхней части щелкнутого div должным образом (он будет прокручиваться до середины тела или намного выше вершины div ).
JS Fiddle функциональности по клику: https://jsfiddle.net/f83dct8f/4/
Я могу выполнить то, что хочу, отредактировав сам Materialize JS. Вот как выглядит строка до моего редактирования:
object.siblings('.collapsible-body').stop(true, false).slideDown({
duration: 350,
easing: "easeOutQuart",
queue: false,
complete: function() {
$(this).css('height', '');
}
});
Я добавляю следующее к полной части приведенного выше утверждения, чтобы выполнить то, что я ищу:
$('body').animate({scrollTop: $('.collapsible-header.active').offset().top },'slow');
Вопрос: я не хочу редактировать сторонний код Materialize, чтобы выполнить то, что мне нужно, поэтому мне нужно найти способ реализовать код анимации тела после завершения слайда без редактирования Materialize. анимация. Я знаю, что должен быть способ сделать это?
Я пробовал очереди событий на складном корпусе, что казалось многообещающим, но печать тестовой консоли выполнялась во время анимации. Смотри ниже. Если бы кто-то мог указать мне правильное направление, что еще я мог бы попробовать, я был бы очень признателен.
$('.collapsible-header.active')
.siblings('.collapsible-body').slideDown().queue(function(){
console.log('DONE');
});