When a user closes a
, hide that
on all site pages

前端 未结 12 938
忘了有多久
忘了有多久 2020-12-15 02:49

I\'ve developed a couple of alert boxes that display on all site pages.

The user is able to close each box separately:

12条回答
  •  情深已故
    2020-12-15 03:39

    You should simply use local storage.

    HTML

    News Alerts

    text text text text text text text text text text text text text text

    Site Maintenance

    text text text text text text text text text text text text text text

    Javascipt

    $(document).ready(function() {
      var nd = new Date();
      var md = nd;
      var newsclicked = false;
      var maintenanceclicked = false;
      setInterval(function() {
        newsclicked = (localStorage.getItem("newsclicked")) ? new Date(localStorage.getItem("newsclicked")) : false;
        maintenanceclicked = (localStorage.getItem("maintenanceclicked")) ? new Date(localStorage.getItem("maintenanceclicked")) : false;
        if (maintenanceclicked === false) {
          console.log(maintenanceclicked);
          $("#alert-box-maintenance").show(800);
        } else {
          var mddiff = (md.getTime() - maintenanceclicked.getTime()) / (60 * 60 * 24 * 1000);
          if (mddiff >= 1) {
            $("#alert-box-maintenance").show(800);
          } else {
            $("#alert-box-maintenance").hide(800);
          }
        }
        if (newsclicked === false) {
          $("#alert-box-news").show(800);
        } else {
          var nddiff = (nd.getTime() - newsclicked.getTime()) / (60 * 60 * 24 * 1000);
          if (nddiff >= 1) {
            $("#alert-box-news").show(800);
          } else {
            $("#alert-box-news").hide(800);
          }
        }
      }, 200);
      $("#close-alert-box-news").on("click", function() {
        nd = new Date();
        localStorage.setItem("newsclicked", nd);
        $("#alert-box-news").hide(800);
      });
      $("#close-alert-box-maintenance").on("click", function() {
        md = new Date();
        localStorage.setItem("maintenanceclicked", md);
        $("#alert-box-maintenance").hide(800);
      });
    });
    

    CSS

    .alert-box {
      width: 50vw;
      position: relative;
      margin: 20px auto;
      border: 1px solid black;
    }
    
    .alert-box-close {
      position: absolute;
      top: -12px;
      right: -12px;
      cursor: pointer;
    }
    #alert-box-news,#alert-box-maintenance{
      display:none; // by default have both elements hidden.
    }
    

    Here is an update in your fiddle to test it in action. Refresh the page once you closed a div

提交回复
热议问题