2012-04-10 7 views
2

Ich mache eine Bildvorschau mit jCarousel (http://sorgalla.com/projects/jcarousel/), aber mit einem Problem konfrontiert: Ich weiß nicht, wie ich könnte laden Sie die dynamische jCarousel-Liste neu.jCarousel initialisieren/aktualisieren/erneut laden jedes Mal auf Bild geklickt

Ich habe einige Kategorien von Bildern. Wenn ich auf ein Bild in einem davon klicke, muss die Liste erstellt und die Vorschau mit diesem Element beginnen. Ich habe etwas Code, aber weiß nicht, wie man es schafft, alle Liste nach dem Klicken auf ein anderes Bild neu zu erstellen, dass die Vorschau mit einem anderen Bild beginnt. sind hier mein Code:

$(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); 
}); 
}); 

Alles wie das ist: Es gibt Bilder> ich auf einem dieser klicken> Popup-Shows mit jCarousel und ein sichtbares Bild und dann konnte ich durch alle anderen Bilder blättern.

Es funktioniert gut, aber nur ein erstes Mal. Wenn ich auf ein anderes Bild klicke (nach dem Schließen des Popups), beginnt die Ansicht mit dem zuletzt geöffneten Bild.

Wenn etwas nicht klar genug ist - bitte fragen Sie. Ich werde versuchen, es genauer zu machen. Danke für Ihre Hilfe!

Antwort

1

Sie können jCarousel neu erstellen, verwenden Sie zuerst $ ('# mycarousel'). Remove(); und nächste init jCarousel erneut. Ich habe nicht wirklich verstanden, was du zu tun versuchst, aber das kann in den meisten Fällen helfen, natürlich sollte jCarousel die Destroy-Methode haben, aber das hat es nicht getan.

Und warum Sie in einigen Fällen nicht jquery Selektoren verwenden?

+0

Ich war ziemlich neu mit dieser Art von Dingen zurück in den Tag. Das ist der Grund, warum ich dieses Problem nicht lösen konnte und in einigen Fällen JavaScript anstelle von jQuery-Selektoren verwendet habe. – Gereby

+0

Ziemlich lustig, akzeptierst du meine Antwort und erklärst dich nach mehr als 2 Jahren :) –

+0

Ich habe keine Antwort schnell bekommen, also habe ich es vergessen und habe es gestern gefunden. :) – Gereby