2012-01-13 74 views
0

我的菜单按钮后面有一个块,用于指示哪一个处于活动状态。刷新后有没有办法保持块的位置? 截至目前,当我按下子页面中的链接时,位置被重新设置。jquery记住页面重装后的动画状态

jQuery代码:

$("button",document.body).click(function(){ 
    var offset = $(this).offset(); 
    var offsetBody = $("body").offset(); 
    $("#block") 
    .animate({ 
    left: (offset.left - offsetBody.left) 
    }, 200); 
}); 

回答

1

Jquery是一个客户端脚本。当您重新加载页面或导航到新页面时,您会向服务器请求信息,这意味着所有客户端数据都会丢失。

然而,根据你的确切问题,会有一些解决方案。

  1. 如果你只在每个页面上的块单独随后的位置有兴趣,你可以编写在标记了一些元素有相同的东西的属性值,如果DOM在加载时检查该值并相应地移动块。

  2. 您可以使用客户端cookie来存储值,并且在加载DOM时检查此变量并相应地为该块设置动画。

  3. 你可以使用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位置。php

<?php 
    session_start(); 
    $_SESSION['position'] = $_POST['pos']; 
?> 
+0

解决方案1似乎适合我,我不想依赖cookie,因为它经常在工作场所被阻塞。如果你可以给我一些代码示例,那么我应该可以修改它为我的网站。即时通讯非常感谢 – Vindfrisk 2012-01-13 02:35:41

+0

林不知道你的解决方案是否会让我到最后。我使用iframe工作,但我宁愿不使用iframe,因为它会给我很多其他问题。看看这里[链接](http://vindfrisk.se/test2/)看看我在找什么。 – Vindfrisk 2012-01-13 03:39:24

+0

可否请你试着准确定义你所需要的功能,最简单的模型可能我不确定我完全得到你的目标。你的链接显示一个似乎破碎的页面?!我的糟糕的是它是我的测试页。 – Neilos 2012-01-13 03:51:04

0

可以存储在下列对象的位置。 1.本地存储(浏览器支持) 在现代浏览器中,您可以将位置存储在Localstorage中。 优点:快速,用户友好。缺点:你需要处理跨浏览器。 2.服务器端。 否则,您需要将它存储在serverside() 优点:不需要考虑浏览器。缺点:你需要关注网络延迟。 3.饼干。

+1

本地存储是HTML 5,虽然这是在它的婴儿期,你正在摆脱一大堆潜在的访客。 – Neilos 2012-01-13 02:43:19

+0

对,这就是为什么我说现代浏览器,每种解决方案都有其优点和缺点,对吗?如果你能容忍这些缺点,那么你可以从专业人士中受益。 – Gran 2012-01-13 03:03:52

+0

我不是在争辩这个事实,我只是客观=) – Neilos 2012-01-13 03:16:40