首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery -延迟函数

问JQuery -延迟函数
EN

Stack Overflow用户
提问于 2020-12-04 18:47:13
回答 2查看 36关注 0票数 1

我有一个功能,可以在滚动/调整大小/加载时根据其他元素(包括固定的标题)将侧面导航定位到固定位置。顶部位置是在内容容器(#timelineFulltext)旁边或标题(.sticky)下面计算的。

问题是,位置在粘性标题隐藏之前就开始起作用了,这是另一个功能。

有没有办法延迟这个函数的执行:

代码语言:javascript
复制
jQuery(window).on('load scroll resize', function (){
// Position TOC on load, scroll and resize
var isSticky = jQuery('.sticky'); // Check if sticky header is present
if(isSticky.length && jQuery('#timelineFulltext').offset().top < jQuery(window).scrollTop()){
    var timelinePosition = isSticky.height() + 38;
}
else{
    var timelinePosition = jQuery('#timelineFulltext').offset().top - jQuery(window).scrollTop();
}
    jQuery('.fixed-timeline').css({'top': timelinePosition + 'px'});

 });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-04 19:02:43

一种解决方案是使用setTimeOut。在这个例子中,在执行你的函数之前,它将等待3秒。

代码语言:javascript
复制
jQuery(window).on('load scroll resize',function() { 
       setTimeout(function() { 
          // Position TOC on load, scroll and resize
          var isSticky = jQuery('.sticky'); // Check if sticky header is present
          if(isSticky.length && jQuery('#timelineFulltext').offset().top < jQuery(window).scrollTop()){
          var timelinePosition = isSticky.height() + 38;
        }
        else{
          var timelinePosition = jQuery('#timelineFulltext').offset().top -     jQuery(window).scrollTop();
        }
        jQuery('.fixed-timeline').css({'top': timelinePosition + 'px'});

          }, 
       3000); 
    });
票数 1
EN

Stack Overflow用户

发布于 2020-12-04 19:20:48

您可以创建一个函数,比如hideStickyBar来应用标题粘性条形图脚本。从jquery中的hide函数中调用此函数作为回调。请参见下面的示例代码

代码语言:javascript
复制
$('#elementTohide').hide(400, hideStickyBar);

jQuery(window).on('load scroll resize', function (){
   hideStickyBar();
});

function hideStickyBar() {
    // Position TOC on load, scroll and resize
   var isSticky = jQuery('.sticky'); // Check if sticky header is present
   if(isSticky.length && jQuery('#timelineFulltext').offset().top < jQuery(window).scrollTop()){
    var timelinePosition = isSticky.height() + 38;
   }
   else{
      var timelinePosition = jQuery('#timelineFulltext').offset().top - jQuery(window).scrollTop();
   }
   jQuery('.fixed-timeline').css({'top': timelinePosition + 'px'});
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65142138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档