jquery 如何隐藏一个元素后,点击和离开它隐藏,直到第二天

sdnqo3pr  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(101)

你知道(在jquery或vanilla中)如何在用户单击按钮(在jquery或vanilla中)后在定义的时间内(或在所有用户会话期间)隐藏元素吗?
场景:
1.用户转到第1页并单击链接按钮。此按钮删除ElementX的类(使其消失)。在此之前没有问题。
1.在用户转到第2页并且他不能看到ElementX之后(这必须持续24小时)。
现在我有这个(但它不工作):

$(document).ready(function(){

  $('#active-promos').addClass('show');

  $('.close-promos').click(function(){

    $('#active-promos').removeClass('show');

    if (!sessionStorage.isActive) {
      $('#active-promos').removeClass('bell');
      sessionStorage.isActive = 1;
    }

  });

});

字符串
谢谢你

dojqjjoe

dojqjjoe1#

你可以使用setTimeout!

var now = new Date();
var tomorrow = new Date();
tomorrow.setDay(now.getDay() + 1);
tomorrow.setHours(0);
tomorrow.setMinutes(0);
tomorrow.setSeconds(0);
tomorrow.setMilliseconds(0);

setTimeout(function() {
  $('#active-promos').addClass('show');
}, tomorrow.getTime() - now.getTime());

字符串

roqulrg3

roqulrg32#

好了,我找到了!
这是我的解决方案:

//Get current time
  var currentTime = new Date().getTime();
  //Add hours function
  Date.prototype.addHours = function(h) {
    this.setTime(this.getTime() + (h*60*60*1000));
    return this;
  }
  //Get time after 24 hours
  var after24 = new Date().addHours(24).getTime();
  //remove class on click
  $('.open-promos').click(function(){
    $('#active-promos').removeClass('bell');
    //Set desired time till you want to hide that div
    localStorage.setItem('desiredTime', after24);
  });
  //If desired time >= currentTime, based on that add or remove class
  if(localStorage.getItem('desiredTime') >= currentTime) {
    $('#active-promos').removeClass('bell');
  }
  else {
    $('#active-promos').addClass('bell');
  }

字符串

相关问题