jquery在页面重新加载后记住动画状态

时间:2012-01-13 02:04:51

标签: jquery location jquery-animate reload

我的菜单按钮后面有一个块,表示哪个是活动的。刷新后有没有办法保持块的位置? 截至目前,当我按下子页面中的链接时,位置会重置。

jquery代码:

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

2 个答案:

答案 0 :(得分:1)

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

然而,根据您的确切问题,会有许多解决方案。

  1. 如果您只对每个页面上的块的位置感兴趣,那么您可以在标记中编写一些元素,使其属性值等于某个值,如果是DOM,则在加载时检查此值相应地移动块。

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

  3. 您可以使用AJAX调用在PHP中设置服务器端变量,并使用此变量在1中动态创建元素。

  4. 您认为这三种解决方案中的任何一种都有效吗?如果您能更准确地告诉我您希望如何实现这一目标,我可以详细介绍。

    方法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.饼干。