2012-04-10 9 views
2

jCarousel(http://sorgalla.com/projects/jcarousel/)で画像プレビューを作成していますが、1つの問題に直面しています。 jCarousel動的リストをリロード/リフレッシュします。jCarousel毎回初期化/リフレッシュ/リロード画像をクリック

私はイメージのカテゴリがほとんどありません。そのうちの1つで画像をクリックすると、リストが作成され、その要素でプレビューが開始される必要があります。私はいくつかのコードを持っていますが、プレビューが他の画像で始まる他の画像をクリックした後、すべてのリストを再作成させる方法を知らないのです。ここ は私のコードです:

$(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とショーと1枚の可視画像のいずれかをクリックしてから、私は他のすべての画像をスクロールすることができます。

これはうまく機能していますが、初めてのことです。他の画像(ポップアップを閉じた後)をクリックすると、最後に開いた画像からビューが始まります。

何かが明確でない場合は、お尋ねください。私はそれをより正確にしようとします。 ご協力いただきありがとうございます!

答えて

1

jCarouselを再作成するには、まず$( '#mycarousel')を使用します。remove();もう一度jCarouselを初期化します。私はあなたがしようとしていることを本当に理解していませんでしたが、これはほとんどの場合に役立ちます。もちろん、jCarouselにはDestroyメソッドが必要ですが、そうではありません。

なぜ、jqueryセレクタを使用しないのですか?

+0

私はこの日のこれらの種類のものでかなり新しいです。これが私がこの問題に対処できず、場合によってはjQueryセレクタの代わりにJavaScriptを使用した理由です。 – Gereby

+0

かなり面白い、あなたは私の答えを受け入れ、2年以上経って自分自身を説明しました:) –

+0

私は答えが早くなかったので、私はそれを忘れて昨日見つけました。 :) – Gereby

関連する問題