Diese beiden Antworten sind in Ordnung. Ich würde es für mit Animieren:
$('html,body').animate({scrollTop: $(ui.newHeader).offset().top},'slow');
ich eine kompliziertere Lösung haben, die Animation zur gleichen Zeit passieren kann, wenn die Platte öffnet.
Ich speichere die Positionen der Scrolltops, die ich möchte, wenn das Akkordeon zum ersten Mal geöffnet wird, und verwende dann die beforeActivate-Methode zum Scrollen. Hier ist der Code:
var accordionTops = {};
$(function() {
$(".accordian")
.accordion({
heightStyle: "content",
collapsible: true,
active: false,
beforeActivate: function(event, ui){
console.log(event);
console.log(ui);
// only trigger on opening a panel
if (ui.newHeader.hasOwnProperty(0)){
var myId = ui.newHeader[0].id;
$('html,body').animate({scrollTop: accordionTops[myId]},'slow');
}
},
activate:function(event, ui){
setAccordionTops($(this).parent());
}
});
});
function setAccordionTops(parent){
$('html,body').scrollTop(0);
// store hilight section tops for use in hilights animation
$('h3.ui-accordion-header', parent).each(function(){
var myId = $(this).attr('id')
if (!(accordionTops.hasOwnProperty(myId))){
accordionTops[myId] = $(this).offset().top;
}
});
}
Hier ist die demo.
Danke! Das hat nicht funktioniert, als ich mich auf meinen vollständigen Code beworben habe, aber mich in die richtige Richtung geleitet habe. – kravits88