Jquery 滚动-单击时无法在固定侧边栏内滚动自定义滚动

Jquery 滚动-单击时无法在固定侧边栏内滚动自定义滚动,jquery,css,scroll,fixed,mcustomscrollbar,Jquery,Css,Scroll,Fixed,Mcustomscrollbar,我制作了一个固定的侧边栏并应用了自定义滚动条(即m.customscrollbar),但我希望在点击锚定标记(在手风琴内部)时使用它我想在侧边栏顶部滚动手风琴,为此我使用的代码与侧边栏没有粘性时使用的代码相同,可以将主体或html滚动到单击的元素顶部位置 我做错了什么 非粘性 下面是侧边栏不粘的代码 $('.card > .collapse').on('shown.bs.collapse', function(e){ e.preventDefault();   e.stop

我制作了一个固定的侧边栏并应用了自定义滚动条(即m.customscrollbar),但我希望在点击锚定标记(在手风琴内部)时使用它我想在侧边栏顶部滚动手风琴,为此我使用的代码与侧边栏没有粘性时使用的代码相同,可以将主体或html滚动到单击的元素顶部位置

我做错了什么

非粘性

下面是侧边栏不粘的代码

$('.card > .collapse').on('shown.bs.collapse', function(e){
    e.preventDefault();  
    e.stopPropagation();
  console.log('click');

  var scrollToCategory = $(this).parent().offset().top;


  var body = $("html, body");
  body.stop().animate({scrollTop:scrollToCategory}, 500, 'swing', function() { 
     // alert("Finished animating");
  });

})
粘性

下面是侧边栏有粘性时的代码

$('.card > .collapse').on('shown.bs.collapse', function(e){
    e.preventDefault();  
    e.stopPropagation();
  console.log('click');

  var scrollToCategory = $(this).parent().offset().top;


  var body = $("#sidebar-wrapper");
  body.stop().animate({scrollTop:scrollToCategory}, 500, 'swing', function() { 
     // alert("Finished animating");
  });

})
这里是jsfiddle链接


注意:粘性示例在JSFIDLE中似乎不起作用。请将示例复制并粘贴到另一个自定义文件中:)

最后,

我找了很久才找到的。这只是m.customscrollbar中已有的一段代码

以下是解决方案:

$('.card > .collapse').on('shown.bs.collapse', function(e){

   e.preventDefault();
   e.stopPropagation();

   var childPos = $(this).parent().offset();
   var parentPos = $('#sidebar').offset();
   var childOffset = {
       top: childPos.top - parentPos.top,
       left: childPos.left - parentPos.left
   }

   $("#sidebar-wrapper").mCustomScrollbar('scrollTo', '-='+childOffset.top);
});