【问题标题】:Jquery stop scroll function after cookie is set设置cookie后jquery停止滚动功能
【发布时间】:2015-06-12 02:17:46
【问题描述】:

我在jQuery中有一个基本功能,它在滚动后显示元素(#test),并在单击标签(隐藏此元素)时设置cookie后隐藏它。问题是当点击标签时元素应该保持隐藏,但现在它再次执行滚动功能。如果在单击标签时设置了 cookie,我如何阻止滚动功能启动?我希望在 cookie 过期之前严格隐藏它。

演示摆弄当前设置:fiddle

感谢您的帮助。

【问题讨论】:

    标签: jquery html


    【解决方案1】:

    我不确定我是否理解了这个问题的全部意图,但听起来问题是,如果您单击“隐藏此元素”,它仍然会在您再次开始滚动后弹出。再次运行该页面后,就可以了;但是,如果您不重新加载它,那么它会继续在滚动时显示弹出窗口。您可以通过删除滚动事件的事件侦听器来防止这种情况发生。最好指定要删除的侦听器函数,这样其他依赖于侦听滚动事件的函数就不会中断。第一步是给你的事件函数一个句柄(这样我们以后可以引用它):

    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/

    【讨论】:

    • 正确,不确定如何在设置 cookie 后删除事件侦听器。像魅力一样工作,谢谢。
    【解决方案2】:

    如果您添加此代码:

    if(cookie && cookie[1]==='true') {
       $("#test").hide();
    }
    

    在 onscroll 函数中,它将检查 cookie 以执行操作

    【讨论】:

    • 如何添加双 if 语句?我试过了,但没有运气。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多