J'ai un extrait HTML qui est retourné à travers Ajax. L'extrait est une balise J'ai besoin d'extraire la valeur de l'attribut J'ai le code suivant en extraire actuellement le code>.
src code> sans chargement initialement de l'image. La raison en est l'attribut src code> contient un chemin partiel que j'ai besoin de manipuler dans mon application pour charger correctement l'image. P> SRC code> Attribut: P> var src = $(value).attr('src');
6 Réponses :
Votre meilleur pari est probablement de produire une étiquette de données sur l'image. Vous pouvez ensuite manipuler cela à l'aide de JQuery, puis l'utiliser pour écrire le chemin d'image final.
Vous feriez donc quelque chose comme celui-ci dans votre HTML: p> puis Votre jQuery: p> éditer: désolé je viens de relire le peu où il vient via Ajax. Dans ce cas, vous pouvez probablement utiliser le rappel des données de votre demande AJAX pour dépouiller la SRC de l'image. P> P>
C'était ma première pensée, mais je n'ai pas de contrôle sur le serveur pour contrôler le nom de l'attribut.
Je suppose que je pourrais faire un remplacement sur la chaîne pour le nom d'attribut avant de le charger dans JQuery ...
J'ai résolu ceci en modifiant le nom de l'attribut SRC avant de le charger dans JQUERY.
value = value.replace('src', 'data-src');
var src = $(value).attr('data-src');
Je serais émerveillé si l'image n'a pas au moins démarrer le chargement si vous êtes capable d'utiliser .attr () code> dessus. Cela signifie qu'il a créé un objet image code> et dispose d'une propriété .src code> défini sur elle.
À droite, c'est ce qui a causé la tentative de charge initiale. En remplaçant le nom d'attribut, l'élément n'a plus d'attribut SRC, et il ne tente donc plus de charger l'image.
Si vous avez juste la chaîne, comme quelque chose comme:
code> pourquoi ne pas aller pour regex? p>
/ [\ "\ '] [A-Z0-9A-Z \.] * / code>.
PS: Mes compétences de regex sont médiocres, vous pouvez donc le manipuler en conséquence. P>
$.ajax('someURL.html', function(data){
var html = data.replace(/\ssrc/g, ' data-src'),
img = $(html),
src = 'some/path/' + img.data('src');
img.attr('src', src);
$('#container').append(img);
});
Utilisez
var string = '<img src="image.png">';
var matches = string.match(/src\=("|')(.*?)\1/);
console.log(matches[2]);
Vous pouvez simplement supprimer l'attribut après avoir accès à celui-ci.
Ceci ne chargera pas l'image non valide, comme vous pouvez le confirmer dans votre console: p>
p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Intéressant. Ceci est utile. Merci!
Si vous ne voulez pas charger l'image, pourquoi même faire un élément img? Créez simplement une chaîne dans le script avec la valeur.
Rendez votre serveur renvoyer
code>. Ensuite, avec jQuery, obtenez le
data-src code>, le manipuler et le remettre en tant quesrc code>.Je n'ai pas de contrôle sur le serveur fini - je reçois juste un extrait d'étiquette IMG arbitraire dans le cadre d'une demande Ajax.
Si vous montrez votre fonction Ajax. Vous devez le manipuler dans le
Succès code> ou la partie code> effectuée code> de l'AJAX avant même de le sortir sur le HTMLSi vous ne voulez pas charger l'image, vous devrez analyser le retour de l'appel AJAX comme chaîne et utiliser regex ou quelque chose pour extraire le
src code>.