我有几个div,用户可以使用jquery切换方法来最小化或扩展。但是,当页面刷新时,Divs会回到它们的默认状态。他们有一种方法让浏览器记住div的最后一个状态?例如,如果我展开ID为“my_div”的div,然后单击页面上的其他内容,然后回到原始页面,我希望“my_div”保持展开状态。当单击链接时使用Jquery更新PHP会话变量
我在想这会使用会话变量,也许当用户点击扩展/最小化按钮AJAX请求可以发送和切换会话变量... IDK ..任何想法?
我有几个div,用户可以使用jquery切换方法来最小化或扩展。但是,当页面刷新时,Divs会回到它们的默认状态。他们有一种方法让浏览器记住div的最后一个状态?例如,如果我展开ID为“my_div”的div,然后单击页面上的其他内容,然后回到原始页面,我希望“my_div”保持展开状态。当单击链接时使用Jquery更新PHP会话变量
我在想这会使用会话变量,也许当用户点击扩展/最小化按钮AJAX请求可以发送和切换会话变量... IDK ..任何想法?
不需要ajax请求,只需将信息存储在cookie或localstorage中。 这里有一个库,它应该帮助你:http://www.jstorage.info/
一些示例代码(未经测试):
// stores the toggled position
$('#my_div').click(function() {
$('#my_div').toggle();
$.jStorage.set('my_div', $('#my_div:visible').length);
});
// on page load restores all elements to old position
$(function() {
var elems = $.jStorage.index();
for (var i = 0, l = elems.length; i < l; i++) {
$.jStorage.get(i) ? $('#' + i).show() : hide();
}
});
如果没有需要支持旧的浏览器,你可以使用html5 web storage。
你可以做这样的事情(例如,从W3Schools的拍摄):
下面的例子计算一个用户访问一个 页面的次数,在当前会话:
<script type="text/javascript">
if (sessionStorage.pagecount) {
sessionStorage.pagecount=Number(sessionStorage.pagecount) +1;
}
else {
sessionStorage.pagecount=1;
}
document.write("Visits "+sessionStorage.pagecount+" time(s) this session.");
</script>
其他人已经给出了与cookies和本地存储API有关的有效答案,但根据您对该问题的评论,以下是如何将click
事件处理程序附加到链接:
$("#someLinkId").click(function() {
$.post("somewhere.php", function() {
//Done!
});
});
事件处理函数只要单击它所连接的元素就会运行。在事件处理程序内部,您可以运行任何你喜欢的代码。在这个例子中,POST请求被激发到somewhere.php
。
酷感谢.... – DanielOlivasJr
我有这样的事情,我使用了基于其用户登录 饼干,如果你想只有主DIV不使用
$('#'+div_id).next().css('display','none');
使用
$('#'+div_id).css('display','none');
* 这里是代码*
//this is the div
<div id = "<?php echo $user; ?>1" onclick="setCookie(this.id)" ><div>My Content this will hide/show</div></div>
function setCookie(div_id)
{
var value = '';
var x = document.getElementById(div_id);
var x = $('#'+div_id).next().css('display');
if(x == 'none')
{
value = 'block';
}
else
{
value = 'none';
}
console.log(div_id+"="+value+"; expires=15/02/2012 00:00:00;path=/")
//alert(x);
document.cookie = div_id+"="+value+"; expires=15/02/2012 00:00:00;path=/";
}
function getCookie(div_id)
{
console.log(div_id);
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==div_id)
{
return unescape(y);
}
}
}
function set_status()
{
var div_id = '';
for(var i = 1; i <= 9 ; i++)
{
div_id = '<?php echo $user; ?>'+i;
if(getCookie(div_id) == 'none')
{
$('#'+div_id).next().css('display','none');
}
else if(getCookie(div_id) == 'block')
{
$('#'+div_id).next().slideDown();
}
}
}
$(document).ready(function(){
get_status();
});
看关于JavaScript Cookie方法,您可以保存div的当前状态,并在用户返回本网站时恢复它。 有一个很好的jQuery插件处理Cookie(http://plugins.jquery.com/project/Cookie)
希望它可以帮助
你有没有尝试过某种东西,或者只是试图有人为你实现它?看看http://api.jquery.com/jQuery.ajax/ – lluismontero
我已经尝试了jQuery的$ .post方法,还没有完全想到如何将它附加到我的页面上的标签,以便与链接被点击它运行$ .post thingamajig – DanielOlivasJr
你不能使用cookie吗?如果该值不需要存储在服务器上,它应该是足够的 - 并且它更简单(例如使用jquery.cookie.js) – Tibo