2010-09-20 21 views
35

Estoy buscando una forma de obtener un elemento HTML a partir de una cadena que contiene HTML. ¿Es posible usar el selector jQuery para hacer esto?Cómo obtener un elemento HTML de una cadena con jQuery

Básicamente tengo una función de javascript que obtiene una página completa del servidor, pero solo necesito un elemento de esa página.

Gracias de antemano

+0

¿Puede compartir qué es exactamente lo que quiere decir con cadena y en qué se parece? – Sarfraz

+0

No está claro qué tienes. ¿La cadena contiene código HTML para un solo elemento o contiene código para varios elementos de los cuales desea obtener uno? – Guffa

Respuesta

61

Sí, puede convertir la cadena en elementos y seleccionar elementos de ella. Ejemplo:

var elements = $(theHtmlString); 
var found = $('.FindMe', elements); 
+10

Esto se llama usar 'elements' como [** context **] (http://api.jquery.com/jQuery/). Está implementado internamente con [**. Find() **] (http://api.jquery.com/find/), por lo que una forma equivalente de escribir lo anterior es: 'var found = elements.find ('. FindMe '); ' –

+1

Este método (' $ (' selector ', $ (' html string ')) ') no parece funcionar para mí en jQ: 1.6.2 – vol7ron

+8

No importa esto ocurrió porque como dijiste es usando 'find()', mientras que yo necesitaba usar 'closer()', quizás jQ debería ser modificado. ** Caso de problema: ** '$ ('pre', $ ('

foo
bar
'));'. Debido a que usa find, que solo mira a los niños, nunca encontrará ningún 'pre's. La solución más fácil es agregar una envoltura. – vol7ron

17

Simplemente envuelva el texto HTML en la función $. Como

$("<div>I want this element</div>") 
+1

Te amo por decirme que esto es posible. Esto acaba de resolver todos mis problemas. – jamzsabb

+1

¡Muchas gracias! – salmanhijazi

8

Si está cargando una página dinámica a partir de un servidor, entonces puede orientar sólo un elemento de la página cargada utilizando el siguiente formulario con .load()

$(selectorWhereToShowNewData).load('pagePath selectorForElementFromNewData'); 

Por ejemplo:

$('#result').load('ajax/test.html #container'); 

Dónde:
#result es wh Antes de que la página cargada se muestre en la página actual
ajax/test.html es la URL a la que se envía la solicitud del servidor
#container es el elemento en la página de respuesta que desea mostrar. Solo eso se cargará en el elemento #result. El resto de la página de respuesta no se mostrará.

3

sólo tiene que utilizar $ .Filter

var html = "<div><span class='im-here'></span></div>" 
var found = $(html).filter(".im-here") 
Cuestiones relacionadas