Javascript jQuery UI手风琴焦点在打开的项目上

Javascript jQuery UI手风琴焦点在打开的项目上,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,我遇到的问题是,如果打开下一个部分(并折叠打开的部分)时,手风琴的一个部分中有很多文本,那么滚动位置就会偏离。帮忙 一旦打开面板,使用方法将滚动到出现标题的位置 activate: function( event, ui ) { $('html,body').scrollTop($(ui.newHeader).offset().top) } 最终使用了: activate: function( event, ui ) { $(ui.newHeader).get(0).

我遇到的问题是,如果打开下一个部分(并折叠打开的部分)时,手风琴的一个部分中有很多文本,那么滚动位置就会偏离。帮忙

一旦打开
面板
,使用方法将
滚动到出现
标题
的位置

activate: function( event, ui ) {
        $('html,body').scrollTop($(ui.newHeader).offset().top)
}

最终使用了:

activate: function( event, ui ) {
    $(ui.newHeader).get(0).scrollIntoView();
}

这两个答案很好。我会考虑动画:

$('html,body').animate({scrollTop: $(ui.newHeader).offset().top},'slow');
我有一个更复杂的解决方案,允许动画在面板打开的同时发生

我存储了第一次打开手风琴时需要的滚动条的位置,然后使用beforeActivate方法滚动。代码如下:

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;
    }
  });
}

这是您的名片。

谢谢!当我应用我的完整代码时,这不起作用,但为我指明了正确的方向。
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;
    }
  });
}