第二次访问时显示div

时间:2011-05-24 19:10:06

标签: jquery cookies session-cookies

我希望div #topmessage在用户第二次访问该网站时向下滑动。此外,当用户单击#close时,将不再显示该消息。我想我必须设置一个cookie并计算它但不确定如何。我有以下cookie插件与jquery http://plugins.jquery.com/files/jquery.cookie.js.txt

一起安装
    <script type="text/javascript">
    jQuery(function($){ 
    $('#topmessage').delay(1000).slideDown(400);
    $("#close").click(function(){
          $("#topmessage").slideToggle(400);
        });

});
</script>
<div id="topmessage">
<a href="#" class="close" id="close">Close</a>
Hi welcome back, if you have any questions please feel free to <a href="/contact">contact me</a>.
</div>

更新:我想这样做的原因是将div推送到访问过该网站一次的用户,现在又在另一个日期返回。我不只是想第二次加载网站时显示div,但它也必须在另一个日期或会话上。据我所知,无法访问cookie的创建日期?

4 个答案:

答案 0 :(得分:5)

这应该有效:

<script type="text/javascript">
    $(function(){
        var value = $.cookie('the_cookie'),
            date = null;
        if (/^\d+$/.test(value || "")) {
             date = new Date();
             date.setTime(value);
        } else if ((value || "") == "") {
             $.cookie('the_cookie', new Date().getTime());
        }

        if (null != date /* && date meets your requirements */){
            $('#topmessage').delay(1000).slideDown(400);
            $("#close").click(function(){
                $("#topmessage").slideToggle(400);
            });
        }
    });
</script>

如果您想在每次访问时更新Cookie中的日期:

        if (/^\d+$/.test(value || "")) {
             date = new Date();
             date.setTime(value);
        }
        $.cookie('the_cookie', new Date().getTime());

工作演示:http://jsfiddle.net/roberkules/NL9jd/

更新

添加了到期日期和cookie的路径 为会话添加了第二个cookie

答案 1 :(得分:1)

我认为这样的东西应该存储在后端并由服务器控制。 Cookie存在的问题是,有人可能会删除所有Cookie(或通过其他浏览器/计算机登录)。听起来像是与用户相关的数据库表上的属性。

服务器可以简单地将标志设置为“show div”,视图可以处理这个问题。不确定您使用的是哪种服务器技术。

答案 2 :(得分:1)

可能(没有使用Jquery cookie,但查看文档......)做...

jQuery(function($){ 
    if($.cookie("showMessage") == "true") {
    $('#topmessage').delay(1000).slideDown(400);
$.cookie("showMessage","never");
}
else if($.cookie("showMessage") != "never"){
$.cookie("showMessage","true");
}
    $("#close").click(function(){
          $("#topmessage").slideToggle(400);
$.cookie("showMessage","never");
        });

答案 3 :(得分:0)

首先,您需要检测cookie是否存在。 如果cookie存在,那么您知道用户已经访问过一次。 如果cookie不存在,则在第一次访问时创建cookie。