如何处理按下的后退按钮,图像应该是持久的

时间:2016-02-22 06:42:10

标签: javascript jquery html html5

我有单选按钮,点击它们。我正在改变旋转木马。因为每个旋转木马被封装在一个div中,在文件就绪功能上,我隐藏了所有的汽车。然后点击单选按钮,我得到输入的id并显示适当的轮播并隐藏其余的。但问题是,当他们前进到下一个屏幕时,又回来了。文档就绪功能正在执行,所有轮播现在都被隐藏,但我希望显示用户选择的上一个轮播。如何处理这个。

$(document).ready(function (){

            $('.car1').hide();
            $('.car2').hide();
            $('.car3').hide();
            $('.car4').hide();
    $(".changeprice").on("click", function() {
        var currentid = this.id;
        console.log(currentid);
        changecarousel(currentid);
    });
});



function changecarousel(id){



    switch(parseInt(id)){
        case 1:
            $('.car1').show();
            $('.car2').hide();
            $('.car3').hide();
            $('.car4').hide();
            console.log(id);
        break;

        case 2:
            $('.car1').hide();
            $('.car2').show();
            $('.car3').hide();
            $('.car4').hide();
            console.log(id);
        break;

        case 3:
            $('.car3').show();
            $('.car1').hide();
            $('.car2').hide();
            $('.car4').hide();
            console.log(id);

        break;

        case 4:
            $('.car4').show();
            $('.car1').hide();
            $('.car2').hide();
            $('.car3').hide();
            console.log(id);
        break;

    }

}

3 个答案:

答案 0 :(得分:1)

你最好的选择是history.popState

在你的changecarousel函数中,需要将id存储到某个持久状态存储(推荐的localStorage)。然后在popState上,查找存储的id并再次调用changecarousel函数。

答案 1 :(得分:1)

您可以使用本地存储来存储用户所做的选择。然而,这项技术是在较新的浏览器中实现的(因此,如果强制要求,请关注oldIEs支持)

localStorage.clear();
...
localStorage.setItem(foo, bar);
...
var bar = localStorage.getItem(foo);

看看这段代码,它使用本地存储实现了一个持久的TODO列表。尝试将项目添加到列表并重新加载页面。 http://codepen.io/BrandonJF/pen/KGwyC

P.S。请记住,您必须清除向导末尾的存储条目或其他任何内容,以便您的用户可以轻松地重新开始。如果用户离开页面而未完成所有步骤,您可能还必须清除选择。

更新:

感谢您提供代码段,请尝试使用此示例: http://codepen.io/anon/pen/yedvXz

$(document).ready(function() {

  $('.car1').hide();
  $('.car2').hide();
  $('.car3').hide();
  $('.car4').hide();

  $(".changeprice").on("click", function() {
    var currentid = this.id;
    changecarousel(currentid);
  });

  carValue = localStorage.getItem('carValue');
  if (carValue) {
    changecarousel(carValue);
  }
});

function changecarousel(id) {
  console.log(id);
  localStorage.setItem('carValue', id);
  switch (parseInt(id)) {
      ...
   }
 }

答案 2 :(得分:0)

请使用以下代码,我认为这对您有用。

    $(document).ready(function (){

$('.car1').hide();
$('.car2').hide();
$('.car3').hide();
$('.car4').hide();

if(localStorage.getItem("lastCarousel") != null){
  $('.'+localStorage.getItem("lastCarousel")).show();
  localStorage.removeItem("lastCarousel");
}
    $(".changeprice").on("click", function() {
    var currentid = this.id;
    console.log(currentid);
    changecarousel(currentid);
});
  });


  function changecarousel(id){

                $('.car1').hide();
      $('.car2').hide();
        $('.car3').hide();
        $('.car4').hide();

switch(parseInt(id)){
    case 1:
        $('.car1').show();
        localStorage.setItem("lastCarousel", "car1");
        console.log(id);
    break;

    case 2:
        $('.car2').show();
        localStorage.setItem("lastCarousel", "car2");
        console.log(id);
    break;

    case 3:
        $('.car3').show();
        localStorage.setItem("lastCarousel", "car3");
        console.log(id);

    break;

    case 4:
        $('.car4').show();
        localStorage.setItem("lastCarousel", "car4");
        console.log(id);
    break;

}

  }

由于