我的菜单按钮后面有一个块,表示哪个是活动的。刷新后有没有办法保持块的位置? 截至目前,当我按下子页面中的链接时,位置会重置。
jquery代码:
$( "button",document.body ).click(function(){
var offset = $(this).offset();
var offsetBody = $("body").offset();
$( "#block" )
.animate({
left: (offset.left - offsetBody.left)
}, 200);
});
答案 0 :(得分:1)
Jquery是一个客户端脚本。当您重新加载页面或导航到新页面时,您从服务器请求信息,这意味着所有客户端数据都将丢失。
然而,根据您的确切问题,会有许多解决方案。
如果您只对每个页面上的块的位置感兴趣,那么您可以在标记中编写一些元素,使其属性值等于某个值,如果是DOM,则在加载时检查此值相应地移动块。
您可以使用客户端cookie来存储值,并在加载DOM时检查此变量并相应地为块设置动画。
您可以使用AJAX调用在PHP中设置服务器端变量,并使用此变量在1中动态创建元素。
您认为这三种解决方案中的任何一种都有效吗?如果您能更准确地告诉我您希望如何实现这一目标,我可以详细介绍。
方法1。
使用JQuery .attr()方法;
标记
<meta name="description" content="home" />
JQuery的
var page = $('meta[name=description]').attr("content");
if (page == "home") {
// you know where it should be
} else if (page == "account") {
// you know where it should be
}
但是我有点担心这不是你想要的功能,是吗?
方法3
标记
<?php
session_start();
$pos = $_SESSION['position'];
echo '<meta name="description" content="' . $pos . '" />'
?>
JQuery的
var position;
// perform animation stuff and store position in the variable
// make a post() request after the position has changed
$.post("position.php", { pos: position } );
PHP position.php
<?php
session_start();
$_SESSION['position'] = $_POST['pos'];
?>
答案 1 :(得分:0)
您可以将位置存储在以下对象中。 1.本地存储(浏览器支持) 在现代浏览器中,您可以将位置存储在Localstorage中。 专业人士:快速,用户友好。 缺点:您需要处理跨浏览器。 2.服务器端。 否则,您需要将其存储在serverside()中 专业人士:无需考虑浏览器。 缺点:慢,你需要关注互联网延迟。 3.饼干。