【发布时间】:2015-06-12 02:17:46
【问题描述】:
我在jQuery中有一个基本功能,它在滚动后显示元素(#test),并在单击标签(隐藏此元素)时设置cookie后隐藏它。问题是当点击标签时元素应该保持隐藏,但现在它再次执行滚动功能。如果在单击标签时设置了 cookie,我如何阻止滚动功能启动?我希望在 cookie 过期之前严格隐藏它。
演示摆弄当前设置:fiddle
感谢您的帮助。
【问题讨论】:
我在jQuery中有一个基本功能,它在滚动后显示元素(#test),并在单击标签(隐藏此元素)时设置cookie后隐藏它。问题是当点击标签时元素应该保持隐藏,但现在它再次执行滚动功能。如果在单击标签时设置了 cookie,我如何阻止滚动功能启动?我希望在 cookie 过期之前严格隐藏它。
演示摆弄当前设置:fiddle
感谢您的帮助。
【问题讨论】:
我不确定我是否理解了这个问题的全部意图,但听起来问题是,如果您单击“隐藏此元素”,它仍然会在您再次开始滚动后弹出。再次运行该页面后,就可以了;但是,如果您不重新加载它,那么它会继续在滚动时显示弹出窗口。您可以通过删除滚动事件的事件侦听器来防止这种情况发生。最好指定要删除的侦听器函数,这样其他依赖于侦听滚动事件的函数就不会中断。第一步是给你的事件函数一个句柄(这样我们以后可以引用它):
var funcdec;
$(window).on('scroll', funcdec = function() {
...
然后,在用户单击标签后,您可以删除该侦听器:
$('.close').on('click', function(){
hideElement();
$(window).off('scroll', funcdec);
});
这是您演示的一个分支:https://jsfiddle.net/qn7kdwxu/
这是您的演示的一个分支,它不测试 cookie,因此您可以看到它的实际效果:https://jsfiddle.net/qn7kdwxu/1/
【讨论】:
如果您添加此代码:
if(cookie && cookie[1]==='true') {
$("#test").hide();
}
在 onscroll 函数中,它将检查 cookie 以执行操作
【讨论】: