2017-11-03 7 views
0

モーダルがあり、スクロール後に表示され、ページの上に消えます。しかし、私はそれを閉じるボタンを押すと、再び表示されないようにしたい。 (私はモーダルを閉じるとさて、それは何度も繰り返し表示され、それは非常に迷惑なんだ)JS - スクロールでモーダルを表示して閉じた後に再び表示しないようにする

$(document).scroll(function() { 
    var y = $(this).scrollTop(); 
    if (y > 400) { 
     $('#modal-name').css({"display":"block"}); 
    } else { 
     $('#modal-name').fadeOut(); 
    } 
}); 
$(document).ready(function() { 
    $(".close-modal, .modal-sandbox").click(function(){ 
     $(".modal").css({"display":"none"}); 
    }); 
}); 
+1

あなたはそれを閉じると、 [localstorage](https://www.smashingmagazine.com/2010/10/local-storage-and-how-to-use-it/)に値を保存します。次に、モーダルを表示する前に、その値をチェックし、値が存在する場合はそれを表示しません。 – DelightedD0D

+0

クッキーを使用してください。 –

+0

@SvSv *クッキーを使用しないでください。 'localStorage'を使用してください。 CookieはHTTP要求ごとに送信されますが、これは大して不必要です。クッキーは、サーバーとクライアントの間の状態を保存するために使用する必要があります。 – msanford

答えて

1

はフラグshouldDisplayModalを使用し、そのようwindow.localStorageにそれを持続:

var shouldDisplayModal = localStorage.getItem("shouldDisplayModal") == null ? (localStorage.setItem("shouldDisplayModal", true) || localStorage.getItem("shouldDisplayModal")) : localStorage.getItem("shouldDisplayModal"); 

$(document).scroll(function() { 
    if (shouldDisplayModal) { 
    var y = $(this).scrollTop(); 
    if (y > 400) { 
     $('#modal-name').css({"display":"block"}); 
    } else { 
     $('#modal-name').fadeOut(); 
    } 
    } 
}); 
$(document).ready(function() { 
    $(".close-modal, .modal-sandbox").click(function(){ 
     $(".modal").css({"display":"none"}); 
     localStorage.setItem("shouldDisplayModal", false); 
    }); 
}); 
+0

ウィンドウをリロードしたら? OPは永続性を望んでいるようだ。 – msanford

+0

これは完全に機能します!どうもありがとうございます! – pasasalron

+0

は、永続性をサポートするための私の答えを更新しました – Liroy

関連する問題