2009-04-01 14 views
60

Tengo una cadena HTML de una fuente cargada de Ajax. Me gustaría obtener algunos atributos de un objeto (imagen) en esta cadena, antes de poner el HTML en el documento.analizar cadena html con jquery

Tengo algo como:

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

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

¿Cómo puedo obtener atributos (por ejemplo, la src) de esta cadena HTML?

Respuesta

106

No soy un 100% seguro, pero no voy a

$(data) 

producir un objeto jQuery con un DOM para esos datos, no está conectado a ninguna parte? O si ya se ha analizado como un DOM, simplemente puede ir $ ("# myImg", datos), o el selector que se ajuste a sus necesidades.

EDITAR
Al releer su pregunta que aparece su 'datos' es ya una de DOM, lo que significa que sólo podría ir (suponiendo que sólo hay una img en su DOM, de lo contrario se necesita un selector más precisos)

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

si desea acceder al atributo src. Si sus datos son sólo texto, es probable que trabajan para hacer

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

uuh, gracias por su respuesta! es la solución :) no lo vi. Te deseo un buen primer abril, y ahora me avergonzaré;) – MarvinS

+0

mhm, tengo que volver a pronunciar mi comentario. su ejemplo no funciona para ie (probado en la versión 7). utilicé "$ (datos)" - "datos" - "$ (datos) .html()" - nada funciona. ¿alguna sugerencia? – MarvinS

+0

$ ("img", $ ('

')) trabajó en FF (no tiene IE7). Tener solo la etiqueta IMG adjunta, o encerrada en un solo cuerpo NO funcionó, ¿entonces tal vez se traduce a una sola entidad? ¿Intentó $ (data) .attr() directamente? – falstro

2

MarvinS.-

Probar:

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

Esto se debe cargar todo el bloque de datos en HTML y la #fullHtmlOutput src de la imagen en #imgSrc.

1

sólo tiene que añadir elemento contenedor se acaben el elemento img sólo para estar seguro de que su no elemento de pinchar la primera, probado en IE, FF

1

Una cosa a tener en cuenta - como yo tenía exactamente este problema hoy en día, dependiendo de su HTML jQuery puede o no analizarlo tan bien. jQuery no analizaría mi HTML en un DOM correcto: en archivos más pequeños que cumplen con XML funcionaba bien, pero el HTML que tenía (que se representaría en una página) no se analizaría cuando se devolviera a una devolución de llamada de Ajax.

Al final simplemente busqué manualmente en la cadena la etiqueta que quería, no ideal, pero funcionó.

+0

Esto podría ayudar si está analizando toda la página: http://stackoverflow.com/a/1069953/854477 –

Cuestiones relacionadas