首页 > 解决方案 > 为什么 delay() 方法在会话存储中不起作用?

问题描述

我想class在一段时间后添加一个。但是延迟方法在 sessionStorage 中不起作用。我不知道为什么它不起作用。

window.onload = function() {
  if (sessionStorage.getItem(".bts-popup") != 'true') {
    $('body.home, body.page-template-page-services').delay(10000).addClass('is-visible');
    sessionStorage.setItem('.bts-popup', 'true');
  }
}

标签: javascriptjquery

解决方案


这与会话存储无关,完全取决于您调用的方法delayaddClass未添加到任何队列中。

文档暗示了这一点:

.delay() 方法最适合在排队的 jQuery 效果之间进行延迟。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的本机 setTimeout 函数,这可能更适合某些用例。

在您的情况下,只需使用

setTimeout(function(){
    $('body.home, body.page-template-page-services').addClass('is-visible');
},10000);

推荐阅读