2

我正在使用 jCarousel (http://sorgalla.com/projects/jcarousel/) 进行图片预览,但面临一个问题:我不知道如何重新加载/刷新 jCarousel 动态列表。

我有几个类别的图像。当我单击其中一张图片时,我需要创建列表并从该元素开始预览。我有一些代码,但不知道如何在单击以其他图像开始预览的其他图像后重新创建所有列表。这是我的代码:

$(document).ready(function(){
$("ul#stage li").live('click', function() {

    var ul = $(this).parent();
    var index = +(ul.children().index(this))+1;

    var mycarousel_itemList = [ ];

    $('li[data-id]').each(function () {
        var $this = $(this);
            mycarousel_itemList.push({
                url : $this.attr("data-img"),
                title : $this.attr("data-title")
            });
    });

    function mycarousel_itemLoadCallback(carousel, state) {
        for (var i = carousel.first; i <= carousel.last; i++) {
            if (carousel.has(i)) {
                continue;
            }
            if (i > mycarousel_itemList.length) {
                break;
            }
            carousel.add(i, mycarousel_getItemHTML(mycarousel_itemList[i-1]));
        }
    };

    function mycarousel_getItemHTML(item) {
        return '<img src="' + item.url + '" width="800" height="600" alt="' + item.url + '" />';
    };
        alert(index);
    jQuery('#mycarousel').jcarousel({
        itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback},
        size: mycarousel_itemList.length,
        scroll: 1,
        start: index,
        wrap: 'last',
        animation: 'fast',
        visible: 1
    });

    document.getElementById('popup-content').style.background='url('+$(this).attr("data-img")+') no-repeat center';
    document.getElementById('fades').style.display='block';
    document.getElementById("light").style.display = "block";
    $("#light").fadeTo("slow", 1);
});
});

一切都是这样的:有图像>我单击其中一个>带有jCarousel和一个可见图像的弹出式节目,然后我可以滚动浏览所有其他图像。

它工作得很好,但只是第一次。当我单击其他图像(关闭弹出窗口后)时,视图以最后打开的图像开始。

如果有什么不够清楚 - 请问。我会尽量让它更精确。谢谢你的帮助!

4

1 回答 1

1

可以重新创建jCarousel,首先使用$('#mycarousel').remove(); 然后再次初始化 jCarousel。我真的不明白你想要做什么,但这在大多数情况下会有所帮助,当然 jCarousel 应该有 Destroy 方法,但它没有。

为什么在某些情况下不使用 jquery 选择器?

于 2012-09-15T18:36:29.460 回答