Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-切换元素并使用cookie保存它_Javascript_Jquery_Html_Cookies - Fatal编程技术网

Javascript jQuery-切换元素并使用cookie保存它

Javascript jQuery-切换元素并使用cookie保存它,javascript,jquery,html,cookies,Javascript,Jquery,Html,Cookies,我正在尝试使用jQuery Cookie插件和jQuery切换功能: 每当有人切换launchpad时,我都想获取它的当前状态 例如,如果有人切换它,它就隐藏了,我想提醒它现在隐藏了,反之亦然 这是我当前的代码: jQuery: $(function(){ if($.cookie){ //By default, if no cookie, just display. $("#launchpad")

我正在尝试使用jQuery Cookie插件和jQuery切换功能:

每当有人切换launchpad时,我都想获取它的当前状态

例如,如果有人切换它,它就隐藏了,我想提醒它现在隐藏了,反之亦然

这是我当前的代码:

jQuery:

$(function(){
            if($.cookie){
                   //By default, if no cookie, just display.
                   $("#launchpad").toggle(!(!!$.cookie("toggle-state")) || $.cookie("toggle-state") === 'true');
            }

            $('#toggle-launchpad').on('click', function(){


                $("#launchpad").toggle(
                    if($(this).is(":visible")){
                        alert("visible!!");
                    }else{
                        alert("not visible");
                    }

                );
                //Save the value to the cookie for 1 day; and cookie domain is whole site, if ignore "path", it will save this cookie for current page only;
                $.cookie("toggle-state", $("#launchpad").is(':visible'), {expires: 1, path:'/'}); 
            });

        });
HTML:

我想我不能在toggle函数中使用if函数。有人能解决我的问题吗?

如果有:

$("#launchpad").toggle(400, function() {
    if($(this).is(":visible")){
        alert("visible!!");
    }else{
        alert("not visible");
    }
});
该代码将在切换功能完成时执行。请注意,toggle函数是异步的,因此在隐藏/显示div之前可能会调用$.cookie调用。尝试:

$("#launchpad").toggle(400, function() {
    $.cookie("toggle-state", $("#launchpad").is(':visible'), {expires: 1, path:'/'});
});
并非400是动画将以毫秒为单位的默认时间。请参见

编辑:如果您的评论是关于代码的第一部分,我会这样写:

if ($.cookie && $.cookie("toggle-state")) && $.cookie("toggle-state") === 'false') {
     $("#launchpad").hide();
}

这假设div在默认情况下是可见的,即不被CSS隐藏

那么如何检查启动板是可见的还是隐藏的,并相应地显示警报?我在JSFiddle上创建了一个小示例:。但是,您仍然可以在作为切换函数调用的第二个参数的匿名函数内执行$this.is':visible'或$launchpad.is':visible'。
if ($.cookie && $.cookie("toggle-state")) && $.cookie("toggle-state") === 'false') {
     $("#launchpad").hide();
}