2011-10-11 130 views
3

我有几个div,用户可以使用jquery切换方法来最小化或扩展。但是,当页面刷新时,Divs会回到它们的默认状态。他们有一种方法让浏览器记住div的最后一个状态?例如,如果我展开ID为“my_div”的div,然后单击页面上的其他内容,然后回到原始页面,我希望“my_div”保持展开状态。当单击链接时使用Jquery更新PHP会话变量

我在想这会使用会话变量,也许当用户点击扩展/最小化按钮AJAX请求可以发送和切换会话变量... IDK ..任何想法?

+1

你有没有尝试过某种东西,或者只是试图有人为你实现它?看看http://api.jquery.com/jQuery.ajax/ – lluismontero

+0

我已经尝试了jQuery的$ .post方法,还没有完全想到如何将它附加到我的页面上的标签,以便与链接被点击它运行$ .post thingamajig – DanielOlivasJr

+3

你不能使用cookie吗?如果该值不需要存储在服务器上,它应该是足够的 - 并且它更简单(例如使用jquery.cookie.js) – Tibo

回答

2

不需要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(); 
    } 
}); 
1

如果没有需要支持旧的浏览器,你可以使用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> 
0

其他人已经给出了与cookies和本地存储API有关的有效答案,但根据您对该问题的评论,以下是如何将click事件处理程序附加到链接:

$("#someLinkId").click(function() { 
    $.post("somewhere.php", function() { 
     //Done! 
    }); 
}); 

事件处理函数只要单击它所连接的元素就会运行。在事件处理程序内部,您可以运行任何你喜欢的代码。在这个例子中,POST请求被激发到somewhere.php

+0

酷感谢.... – DanielOlivasJr

0

我有这样的事情,我使用了基于其用户登录 饼干,如果你想只有主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(); 
}); 
0

看关于JavaScript Cookie方法,您可以保存div的当前状态,并在用户返回本网站时恢复它。 有一个很好的jQuery插件处理Cookie(http://plugins.jquery.com/project/Cookie)

希望它可以帮助