2009-04-01 31 views
60

Ho una stringa HTML da una fonte caricata Ajax. Vorrei ottenere alcuni attributi da un oggetto (immagine) in questa stringa, prima di inserire l'HTML nel documento.parse stringa html con jquery

Ho qualcosa di simile:

$.ajax({ 
     url: uri+'?js', 
     success: function(data) { 
      var htmlCode = $(data).html(); 

      $('#otherObject').html(data); 
     } 
    }); 

Come posso ottenere gli attributi (il src per esempio) di questa stringa HTML?

risposta

106

Io non sono un sicuro al 100%, ma non voglio

$(data) 

produrre un oggetto jQuery con un DOM per quei dati, non collegato da nessuna parte? O se è già stato analizzato come DOM, potresti semplicemente andare $ ("# myImg", data), o qualunque altro selettore si adatta alle tue esigenze.

EDIT
Rileggendo la tua domanda Sembra che il tuo 'dati' è già un DOM, il che significa che si può solo andare (supponendo che c'è solo un img nel DOM, altrimenti avrete bisogno di un selettore più precisa)

$("img", data).attr ("src") 

se si desidera accedere all'attributo src. Se i dati sono solo testo, sarebbe probabilmente molto lavoro da fare

$("img", $(data)).attr ("src") 
+2

uuh, grazie per la risposta! è la soluzione :) non l'ho visto. ti auguro un buon primo aprile - e ora mi vergognerei;) – MarvinS

+0

mhm, devo regredire il mio commento. il tuo esempio non funziona per esempio (testato nella versione 7). Ho usato "$ (dati)" - "dati" - "$ (dati) .html()" - niente funziona. eventuali suggerimenti? – MarvinS

+0

$ ("img", $ ('

')) ha funzionato in FF (non ho IE7). Avere solo il tag IMG incluso, o racchiuso in un solo corpo NON ha funzionato, quindi forse si traduce in una singola entità? Hai provato $ (dati) .attr() direttamente? – falstro

2

MarvinS.-

Prova:

$.ajax({ 
     url: uri+'?js', 
     success: function(data) { 
       var imgAttr = $("img", data).attr('src'); 
       var htmlCode = $(data).html(); 
       $('#imgSrc').html(imgAttr); 
       $('#fullHtmlOutput').html(htmlCode); 
     } 
    }); 

Questo dovrebbe caricare l'intero blocco html dai dati in #fullHtmlOutput e la src dell'immagine in #imgSrc.

1

basta aggiungere elemento contenitore befor vostro elemento img solo per essere sicuri che il vostro non è elemento tirammo fuori il primo, testato in IE, FF

1

Una cosa da notare - come ho avuto esattamente questo problema oggi, a seconda della HTML jQuery può o non può analizzarlo così bene. jQuery non analizzava il mio codice HTML in un DOM corretto - su file XML compatibili più piccoli funzionava bene, ma l'HTML che avevo (che avrebbe eseguito il rendering in una pagina) non veniva analizzato quando veniva restituito a un callback Ajax.

Alla fine ho semplicemente cercato manualmente nella stringa il tag che volevo, non ideale ma ha funzionato.

+0

Questo potrebbe aiutare se stai analizzando l'intera pagina: http://stackoverflow.com/a/1069953/854477 –