使用jcarousel.js - 导航后保存图像和位置

时间:2013-05-20 08:47:43

标签: javascript jquery html5 jcarousel

我正在使用jcarousel.js插件在我的<ul>应用中点击jQuery Mobile图片列表,并带有轮播效果。每次我初始化我的页面时,图像都是不同的(来自WS),所以在我将它们设置为<ul>之后我称之为:

 $('#imagesPageDiv').live('pagebeforeshow', function (e, data) {
                   jQuery('#carouselDiv').jcarousel({ visible: 4, scroll: 2});
              });

工作正常。

每个图片都有URL到同一个大图片。回到同一页面时会出现问题。

我不想从开始设置图像,想要在我点击之前准确地回到相同的图像和地点(图像位置)。 我设置flag,所以基本上我知道我何时回来以及从开始时开始。 所以我尝试在导航到下一页之前保存所有页面,然后再回来将它再次附加到页面:

  globalDivContent = $('#imagesPage #box');

回到那个页面后,我附加了它:

 $("#imagesPage").empty();
   $("#imagesPage").append(globalDivContent );

真正得到与真实图像相同的courosel并且可能会出现一个问题:它不会滚动。    箭头是可点击的,但没有做任何事情

我在启动页面并返回页面时对代码进行了比较。任何想法我如何实现我的想法?

      <!DOCTYPE html>
        <html>
            <head>
                <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
                <link rel="stylesheet" href="http://sorgalla.com/projects/jcarousel/skins/tango/skin.css" />    
                <script src="http://sorgalla.com/projects/jcarousel/lib/jquery-1.9.1.min.js"></script>
                <script src="http://sorgalla.com/projects/jcarousel/lib/jquery.jcarousel.min.js"></script>                    
                <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>    
                <script>
                      $('#imagesPage').live('pageshow', function (event, ui) {
                      jQuery('#carouselDiv').jcarousel({visible:2});
       });
                </script>
            </head>
            <body>
                <div data-role="page" id="imagesPage">
                    <div data-theme="b" data-role="header">
                        <h1>Index page</h1>
                    </div>

                    <div data-role="content">
                        <ul id="carouselDiv" class="jcarousel-skin-tango">
                            <li><img src="http://static.flickr.com/66/199481236_dc98b5abb3_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/75/199481072_b4a0d09597_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/57/199481087_33ae73a8de_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/77/199481108_4359e6b971_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/58/199481143_3c148d9dd3_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/72/199481203_ad4cdcf109_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/58/199481218_264ce20da0_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/69/199481255_fdfe885f87_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/60/199480111_87d4cb3e38_s.jpg" width="65" height="65" alt=""/></li>
                            <li><img src="http://static.flickr.com/70/229228324_08223b70fa_s.jpg" width="65" height="65" alt=""/></li>
                        </ul>
                    </div>
                </div>    
            </body>
        </html> 

1 个答案:

答案 0 :(得分:0)

我建议只保存您需要的信息,而不是一次性复制整个div。这将允许您挑选您真正需要的数据,并在页面加载中安全地保留它。

最好的解决方案是使用本地存储。这使您可以在IE8中持久保存字符串到字符串的值(请参阅此处的更多信息:http://www.html5rocks.com/en/features/storage)。

例如,您可以像这样保存数据:

localStorage["carouselSource"] = JSON.stringify(
    $('#carouselDiv li img').map(function(i,e){
        return $(this).attr('src');
    }).get();
);

并像这样检索它(在jCarousel调用之前):

var items = jQuery.parseJSON(localStorage["carouselSource"]);

jQuery.each(items, function(i,e){
    $('#carouselDiv').append('<li><img src="' + e + '" width="65" height="65" alt="" /></li>');
});

这将确保在用户返回页面时显示相同的图像集。您可以使用类似的技术来保存滑块的位置和您要保存的任何其他变量数据。