Javascript Jquery-制作cookie后隐藏元素
我有一个隐藏的元素出现在用户滚动条上。当单击文本“Click to close”(位于元素内部)时,元素隐藏并设置cookie,这会阻止刷新时的可见性。我的问题:在设置Javascript Jquery-制作cookie后隐藏元素,javascript,jquery,html,css,cookies,Javascript,Jquery,Html,Css,Cookies,我有一个隐藏的元素出现在用户滚动条上。当单击文本“Click to close”(位于元素内部)时,元素隐藏并设置cookie,这会阻止刷新时的可见性。我的问题:在设置cookie而不刷新时,元素是否可能保持隐藏状态?当前,当单击其中的文本时,元素隐藏,但在滚动时再次显示 我的当前设置: 谢谢。最直接的方法是注意到该项已隐藏: $(".set-cookies").on("click", function () { $("#test").hide(); $("#test").dat
cookie
而不刷新时,元素是否可能保持隐藏状态?当前,当单击其中的文本时,元素隐藏,但在滚动时再次显示
我的当前设置:
谢谢。最直接的方法是注意到该项已隐藏:
$(".set-cookies").on("click", function () {
$("#test").hide();
$("#test").data('hidden', true);
});
在滚动时,请注意:
$(document).scroll(function() {
var y = $(this).scrollTop();
if ((y > 300) && ! $('#test').data('hidden')) {
$("#test").show();
}
});
.如果只想通过测试cookie来完成此操作,则应将cookie检查条件移动到滚动事件处理程序中。现在,如果cookie不存在,您将在页面加载时绑定scroll事件,但一旦设置了它,您就不会解除scroll事件的绑定。看
$(文档)。滚动(函数(){
if(document.cookie.indexOf(“testCookie”)<0){
var y=$(this.scrollTop();
如果(y>300){
$(“#测试”).show();
}
}
});
以下是我解决问题的方法,通过解除滚动侦听器的绑定,这将提高性能
function setCookie() {
days = 15;
CookieDate = new Date();
if (days > 0) {
CookieDate.setTime(CookieDate.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = "testCookie=true; expires=" + CookieDate.toGMTString();
}
if (days === 0) {
document.cookie = "testCookie=true;";
}
}
function hasCookie() {
return document.cookie.indexOf("testCookie") > 0;
}
function scrollListener() {
var y = $(this).scrollTop();
if (y > 300) {
$("#test").show();
}
}
$(".set-cookies").on("click", function () {
setCookie();
$("#test").hide();
// remove scroll listener
$(document).off("scroll", scrollListener);
});
// initial check on startup
if (hasCookie()) {
// cookie set, hide message
$("#test").hide();
} else {
// cookie missing, register scroll listener
$(document).scroll(scrollListener);
}
jshiddle:谢谢Josh,马上就来。我还将top distance与cookie测试相结合,效果很好。谢谢Paul,希望我能给出多个被接受的答案——投票通过。
function setCookie() {
days = 15;
CookieDate = new Date();
if (days > 0) {
CookieDate.setTime(CookieDate.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = "testCookie=true; expires=" + CookieDate.toGMTString();
}
if (days === 0) {
document.cookie = "testCookie=true;";
}
}
function hasCookie() {
return document.cookie.indexOf("testCookie") > 0;
}
function scrollListener() {
var y = $(this).scrollTop();
if (y > 300) {
$("#test").show();
}
}
$(".set-cookies").on("click", function () {
setCookie();
$("#test").hide();
// remove scroll listener
$(document).off("scroll", scrollListener);
});
// initial check on startup
if (hasCookie()) {
// cookie set, hide message
$("#test").hide();
} else {
// cookie missing, register scroll listener
$(document).scroll(scrollListener);
}