2010-07-23 5 views
0

Voici mon code:jquery et .attri ne fonctionne pas?

function init(){ 
    $.get(URL, function(data) { 
    DATA = data; 
    var srcWithHead = URL + "/" + $(DATA).find("img").attr("src"); 
    $(DATA).find("img").attr("src", srcWithHead); 
    console.log("src = " + $(DATA).find("img").attr("src")); 
    }); 
} 

et je voudrais avoir une projection d'image. Mais l'image URL src est un chemin relatif. Donc, j'ai besoin d'avoir un en-tête de chaque image. Mais il semble que $(DATA).find("img").attr("src", srcWithHead); ne fonctionne pas.

Que puis-je faire? et toute autre méthode? Merci

+1

qu'est-ce que 'console.log ("src =" + $ (DATA) .Find ("img") attr ("src").);' Vous donne ?? – Reigel

+0

est votre retour de données de l'ajax un type de chaîne? –

+0

Je veux voir si le src a changé ou non Cela devrait être une chaîne. – Ian

Répondre

1

Vous avez probablement plusieurs balises IMG. Utilisez each() pour accéder à chacun d'entre eux.

function init(){ 
    $.get(URL, function(data) { 
    DATA = data; 
    $(DATA).find("img").each(function() { 
     var srcWithHead = URL + "/" + $(this).attr("src"); 
     $(DATA).find("img").attr("src", srcWithHead); 
    }); 
} 
+1

THX Cela semble fonctionner. Mais seulement pour la console. Il ne peut pas montrer aussi. Au moins, le chemin est correct. – Ian

0

Je travaillais avec attr aujourd'hui et les travaux suivants pour moi.

$('#ctl00_Content_imgbtnDiscardQuote') 
    .attr('src','').attr('value','Cancel').attr('type','submit'); 

Essayez de lancer $(DATA); dans Firebug ou une console de chrome, il ne peut pas être de retour ce que vous pensez.

Modifier essayer .each()

$(DATA).find('img').each(function(index){ 
    $(this).attr('src','/myimg.jpg'); 
}); 

Bienvenue sur le débordement de pile.

+0

Désolé, je ne peux pas l'obtenir. – Ian

+0

parce que dans mon $ (DATA), j'ai plus de l'élément img. Donc, j'ai besoin de le trouver en premier. Je ne suis pas sûr de ce que vous parlez. Pourriez-vous expliquer plus? Et vous pouvez le résoudre, non? Thx, je suis un nouveau. – Ian

+0

Je ne vois pas pourquoi cela ne fonctionnerait pas avec plusieurs éléments. Cependant, vous pouvez essayer d'utiliser $ (DATA) .each(); Voir les modifications ci-dessus. – Keyo

0

Se pourrait-il que vous ne trouviez aucun élément?

Essayez

alert($(DATA)); 
alert($(DATA).length); 
alert($(DATA).find('img').length); 
+0

Non, je le trouve et il peut montrer les pages. Mais le src ne change pas. Cela reste le même. – Ian

+0

@Ian: que voulez-vous dire par * montrer les pages *? quelles pages? ce que je dis c'est que si $ (DATA) 'ou' .find ('img') 'renvoie un objet vide, alors votre code fonctionnera, mais aucune image ne sera changée. Veuillez noter que si vous essayez de changer plus d'une image, vous les changez tous en * same * src avec ce code, car la variable 'srcWithHead' ne contiendra qu'un seul src. Si vous voulez faire un changement par rapport à chaque image, et que vous êtes sur jquery1.4, vous pouvez faire '$ (DATA) .find ('img'). attr ('src', function() {retourner l'URL + '/' + $ (this) .attr ('src');}); '. –

+0

notez également (bien que ce ne soit probablement pas la cause de vos problèmes) que vous ayez une variable * globale * DATA ici, puisque vous l'introduisez sans le mot clé 'var'. Pourquoi ne pas utiliser la variable 'data' que vous avez déjà, à la place? –

0

essayer de eval votre data, je ne sais pas ici car je ne sais pas ce que serait les données soient, mais pour cette solution.

function init(){ 
    $.get(URL, function(data) { 
     DATA = eval("("+data+")"); // treat the data as json object 
     var srcWithHead = URL + "/" + $(DATA).find("img").attr("src"); 
     $(DATA).find("img").attr("src", srcWithHead); 
     console.log("src = " + $(DATA).find("img").attr("src")); 
    }); 
}