Changer la source d'image si le fichier existe

J'ai http://jsfiddle.net/rcebw/3/

Le but de cela est que j'aurai plusieurs de ces inlinediv . Chacun a 2 divs à l'intérieur, celui qui détient une image et une qui contient un lien. Ceux-ci sont générés dynamiquement à partir d'une liste des sous-sites sur un autre site.

Ce que je veux faire, c'est vérifier chaque div avec la classe inlinediv . Obtenez le texte interne du lien dans div iconLinkText et recherchez un fichier avec ce nom sur le site. ( Http://www.mojopin.co.uk/images/ pour ce test). S'il existe alors, modifiez-lui l'image src.

Je prends probablement l'itinéraire absolument erroné pour cela, mais je ne peux pas sembler le faire fonctionner. Lors du test, il ne peut même pas trouver la inlinediv ! Cela dit, il est nul.

Je suis assez nouveau pour jQuery mais quelqu'un a-t-il des conseils? (Je ne sais même pas si je me suis bien expliqué!)

Vous ne devez pas utiliser AJAX pour le faire, car vous pouvez associer des images d'autres domaines sans aucune restriction. Voici comment vous pouvez vérifier si une image existe:

 function checkImage(src) { var img = new Image(); img.onload = function() { // code to set the src on success }; img.onerror = function() { // doesn't exist or error loading }; img.src = src; // fires off loading of image } 

Voici une implémentation en cours d'exécution http://jsfiddle.net/jeeah/

La même politique d'origine vous empêche de faire des demandes AJAX vers d'autres domaines. À moins que vous ne l'utilisiez sur "http://www.mojopin.co.uk", ce code ne fonctionnera pas.

Vous ne pouvez pas résoudre ce problème uniquement avec jQuery: La même politique d'origine ne vous permettra pas de faire des demandes de tiers sites Web.

La solution la plus simple est de mettre en place un service sur votre serveur qui renvoie les demandes au site externe.

Fondamentalement, si votre site Web est en cours

http://www.foo.bar

Alors vous créez

http://www.foo.bar/scheckscript.php (par exemple)

Que vous pouvez interroger avec l'URL dont vous avez besoin

http://www.foo.bar/scheckscript.php?url=http%3A//www.third.com