在DOM准备好之后将Cookie设置为影响样式/调用函数

时间:2011-04-14 19:51:20

标签: javascript jquery css

当用户点击按钮时,系统设置为交换样式表。 Cookie已设置。

jQuery(document).ready(function() {    

$(function() { 
            $("#designSwap li a").click(function() { 
                $("link").attr("href",$(this).attr('rel'));            
                $.cookie("cssSessionColor",$(this).attr('class'), {expires:null, path: '/'});
                $.cookie("css",$(this).attr('rel'), {expires: 365, path: '/'});
                updateColor($(this).attr('class'));
                return false;
            });
        });
});

否则,如果用户未在样式表之间设置首选项,则随机选择一个并仅设置会话cookie:

if($.cookie("css")) {       
    $("link").attr("href",$.cookie("css"));

}else if($.cookie("cssSession")) {
    $("link").attr("href",$.cookie("cssSession"));

}else{

    var rand = Math.floor(Math.random()*2)

    if (rand > 0) {

       $("link").attr("href","/lib/css/common-dark.css");
       $.cookie("cssSessionColor","dark", {expires:null, path: '/'});
       $.cookie("cssSession","/lib/css/common-dark.css", {expires:null, path: '/'});


    }else{

       $("link").attr("href","/lib/css/common.css");
       $.cookie("cssSessionColor","light", {expires:null, path: '/'});
       $.cookie("cssSession","/lib/css/common.css", {expires:null, path: '/'});

    };
}

所有这一切都很好。问题在于为站点上的Flash视频播放器设置颜色。 (updateColor函数)。如果用户单击链接以选择颜色,但仅通过读取cookie就无法正常工作。

我们认为问题是它在DOM准备好之前就已经开始了。

我们要做的是确保在准备好的功能点击后调用调整颜色。这很可能很容易,我们只是没有看到它。

1 个答案:

答案 0 :(得分:0)

你有:

$(function() { });

嵌套在里面:

jQuery(document).ready(function() { });

这些意味着同样的事情,前者是后者的简称。我敢打赌,这是因为你将一个匿名函数绑定到document.ready上的document.ready而导致你的问题。因此,Document.ready已经发生,并且不会调用该函数。

编辑:我想的更多,似乎我可能是错的......从来没有做过(没有理由),但这确实有用,因此不是你的问题。我会留下这里的帖子,以便你可以纠正它。 :)

http://jsfiddle.net/bcEQZ/