2010-03-11 15 views
6

Tengo algunos html extraídos en una var de cadena, y quiero utilizar la selección de elementos jQuery solo en esa cadena. es posible?cómo aplicar la selección de elementos de jQuery a una variable de cadena

Por ejemplo:

HTML:

<div class=message> 
    This is a message. Click <a class=link id=link1 href=example.com>here</a> 
</div> 

jQuery:

$('div.message').each(function(i, item) { 
    myHtml = $(this).html(); 
    //select <a> tag attributes here 
)}; 

lo tanto, en este ejemplo, que desea extraer los id y href de la etiqueta <a> en myHtml.

Gracias

Respuesta

10

si he entendido bien, usted tiene código HTML en una variable de cadena, y desea consultar dentro de ese?

// Suppose you have your HTML in a variable str 
var str = '<div class="message">This is a message. Click ' 
     + '<a class="link" id="link1" href="example.com">here</a></div>​​​​​​​​​​​​​​​'; 

// You query the DOM fragment created by passing the string to jQuery function. 
// $(<string>) - creates a DOM fragment (string must contain HTML) 
var anchor = $('a', $(str)); 

// Then you can retrieve individual properties and/or contents: 
var id = anchor.attr('id'); 
var href = anchor.attr('href'); 
var text = anchor.text(); 
+0

Esto parece prometedor. Voy a darle una oportunidad. – user191688

+0

+1 - La única respuesta que se aplica a la pregunta. –

+0

@Nick Craver, ¿cómo es esto diferente a mi respuesta? Aparte del selector. Estoy tratando de entender. Gracias –

0

Se podría hacer algo como:

var aID = $('div.message a.link').attr('id'); 
var aHREF = $('div.message a.link').attr('href'); 
+0

@durilai Sí, podría hacerlo, pero no es óptimo en esta situación. – user191688

+0

¿Por qué? Logra lo que estás buscando. –

+1

@uku esa es la mejor manera ... – Joberror

0

Hay un plugin de jQuery (here) que se puede utilizar para analizar una cadena como una de DOM XML y luego usar jQuery para consultarlo. Sin embargo, debe ser XML, no el tipo de XML "relajado" que a veces se ve en HTML (es decir, necesita cotizaciones para los valores de sus atributos).

0

Si necesita procesar varios elementos dentro de su estructura que puede hacer este

$('div.message').each(function(i, item) { 
    // find desendant of the item using "find" 
    var alink = $(this).find('a.link'); 
    // Process the item 
    var id = alink.attr('id'); 
    var href = alink.attr('href'); 
)}; 
+0

El método Buscar es recursivo y no lo usaría a menos que lo necesite. –

Cuestiones relacionadas