Ich habe ein flexslider div-Element, das korrekt mit statischem Inhalt funktioniert. Wenn ich jedoch versuche, Bilder dynamisch mit jquery hinzuzufügen, bekomme ich extrem seltsame und unterschiedliche Ergebnisse.FlexSlider lädt und löscht Bilder dynamisch und funktioniert nicht
Ich benutze das flexslider Element innerhalb einer Leaflet Sidebar (was, wie gesagt, mit statischem Inhalt arbeitet) und lade die Bilder nachdem die Sidebar komplett expandiert ist (mit sidebar.on ('showed', function ...)).
Die Ladefunktion sieht aus wie diese:
this.loadImages = function(osm_id) {
var nextImage = true;
var counter = 1;
while (nextImage) {
var li = null;
$.ajax({
async : false,
url : '/img/locations/'+osm_id+'/'+counter+'.jpg',
type : 'HEAD',
error : function() {
nextImage = false;
},
success : function() {
var path = '/img/locations/'+osm_id+'/'+counter+'.jpg';
$('<img src="'+path+'">').load(function() {
var li = $("<li></li>");
$(this).appendTo(li);
li.appendTo($("#locationSlides"));
}).ready(function() {
$("#flexslider").data("flexslider").addSlide(li);
});
counter++;
}
});
}
}
JQuery lädt die Bilder und fügt sie der flexslider Klasse (DOM), aber sie are't im Browser angezeigt.
$("#flexslider").flexslider();
jetzt Aufruf zeigt die geladenen Bilder in Firefox, aber zeigt sie auch nicht in Chrome, obwohl sie auf das DOM in beiden Browsern hinzugefügt werden. Aber mehr Bilder laden und die Methode ein zweites Mal aufrufen, hat keine Wirkung mehr in Firefox.
Ich kann absolut nicht, dieses Verhalten erklären.
Warum sind Sie einen $ Schnipsel und ein $ .load mit? –
Der Ajax-Aufruf, um zu prüfen, ob das Bild existiert und die Last, um es tatsächlich zu holen. Es gibt sicherlich einen praktikableren Ansatz, aber das Laden selbst funktioniert so weit. – ltsstar
versuchen, diese Zeile zu setzen: '$ (" # flexslider "). Flexslider();' innen 'error: function()' –