Passer de la variable à la fonction AJAX de jquery succès de rappel

Je suis en train de précharger des images avec jQuery appel AJAX, mais je suis d'avoir de vrais problèmes en passant un (url) de la chaîne dans une fonction au sein de la réussite de la fonction de l'appel AJAX (si cela fait sens).

Voici mon code est:

//preloader for images on gallery pages
window.onload = function() {
    setTimeout(function() {     
        var urls = ["./img/party/"]; //just one to get started

        for ( var i = 0; i < urls.length; i++ ) {
            $.ajax({
                url: urls[i],
                success: function(data,url) {
                    $(data).find("a:contains(.jpg)").each(function(url) {                               
                        new Image().src = url + $(this).attr("href");
                    });
                }
            });
        };  
    }, 1000);
};

On peut voir mon essai (raté) à passer l'url par le biais de l' .each() appel url finit prend la valeur de l'augmentation de nombres entiers. Pas sûr pourquoi, ni ce qu'elles concernent, peut-être le nombre de fichiers jpg?

...de toute façon, il faut bien sûr prendre la valeur unique dans mon url tableau.

Merci pour toute aide - j'ai toujours l'impression de faire un peu d'une torsion avec ces rappels.


De PROGRESSION?

Donc, j'ai jeté un peu autour de lui, en tenant compte des commentaires de @ron tornambe et @PiSquared et je suis actuellement ici:

//preloader for images on gallery pages
window.onload = function() {
    var urls = ["./img/party/","./img/wedding/","./img/wedding/tree/"];

    setTimeout(function() {
        for ( var i = 0; i < urls.length; i++ ) {
            $.ajax({
                url: urls[i],
                success: function(data) {
                    image_link(data,i);
                    function image_link(data, i) {
                        $(data).find("a:contains(.jpg)").each(function(){ 
                            console.log(i);
                            new Image().src = urls[i] + $(this).attr("href");
                        });
                    }
                }
            });
        };  
    }, 1000);       
};

J'ai essayé de mettre le image_link(data, i) ici, là et partout (dans chaque fonction imbriquée etc.) mais j'obtiens le même résultat: la valeur de i n'est jamais connecté en tant que 3. Je soupçonne que c'est parce que toutes les références à i point à la même chose, et au moment où la tâche asynchrone est image_link(data, i) la for... boucle est terminé (et donc a une valeur de 3). Inutile de dire que cela donne urls[i] comme 'undefined'.

Tout (plus) conseils comment je peux contourner cela?

  • Je suis confus par le deuxième argument (url) dans la réussite de la fonction. Cet argument fait référence à l'état de l'opération et que vous l'utilisez (dans le champ) que l'url?
  • Ouais c'est vrai. En fait, j'ai plus confus! Merci pour ça, je ne sais pas - que vais vous expliquer pourquoi je obtenir les numéros de url dans le .each() peu.
  • Quel est le retour de "données" ressembler. C'est de l'html? jQuery "contient" renvoie le texte des éléments, non src ou hrefs.
  • J'ai eu l'idée originale et le code ici perishablepress.com/3-ways-preload-images-css-javascript-ajax - il a travaillé tous très bien ici (c'est à dire ce qui est "dans"data). J'ai ajouté un peu plus de complexité, je suppose et brisé. De toute façon, je viens de poster mes modifications ci-dessus ...toujours en panne.
  • Connaissez-vous les noms de fichiers des images que vous souhaitez charger ou êtes-vous le chargement de toutes les images stockées dans des dossiers en particulier, où les images peuvent être ajoutés et/ou supprimé?
InformationsquelleAutor Jon | 2013-08-24