我希望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的创建日期?
答案 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。