In einem früheren Beitrag zum rekursiven jQuery-Ladebefehl funktioniert der vorgeschlagene Code, hat jedoch einige Einschränkungen. Hier ist der Code, vorgeschlagen worden war und the link:Rekursiver jQuery-Ladebefehl
function loadTree($element) {
$element.each(function(){
this.load('url', function(){
loadTree(this.find('.children'));
});
});
}
loadTree($('#content'));
Das Problem mit dem obigen Code ist, dass, wenn Laden nicht erfolgreich ist, die rekursive Schleife endet. In meinem Fall lade ich Bilder nacheinander und erhalte die Bild-URLs über einen AJAX-Aufruf aus der Datenbank. Wenn aus irgendeinem Grund eine Bild-URL nicht korrekt ist, stoppt die Rekursion und ich möchte nicht, dass dies passiert. Der Rest der Bilder muss geladen werden, egal was passiert, denn wenn ich hundert Bildpfade habe, in denen alle gültig sind, mit Ausnahme der ersten, werden alle 100 nicht angezeigt.
Ich habe auch ein anderes verwandtes Problem. Grundsätzlich habe ich 7 Bild-URLs über Ajax abgerufen, ich habe dann 7 HTML-Bild-Tags in einem String gebildet und dann das load-Ereignis mit diesem String nur einmal aufgerufen: all dies um die Anzahl der Browser-Anfragen zu reduzieren. Daher möchte ich den Load-Event-Callback auslösen, nachdem alle 7 Bilder geladen sind. Wenn ich dies jedoch versuche, löst der Load-Ereignis-Callback für jedes Bild aus. Irgendwelche Ideen, wie ein Callback ausgelöst wird, wenn alle Elemente geladen wurden (sei es ein erfolgreiches Laden oder nicht; ein Ladeversuch).
Dank
Nur ein Gedanke, aber wäre es nicht besser, den Bild-URL-Baum von einem einzigen Anruf an Ihr Backend zurückzugeben und dann in Ihrem Client-Code durchzugehen? – Lazarus
Ich bekomme nicht nur URL, ich bekomme die URL, Breiten und Höhen, Bildunterschrift, etc ... und den ganzen Baum für 1000 Bilder zu sagen wäre zu viel, um den Zweck zu besiegen. – prince