2010-09-20 21 views
35

Sto cercando un modo per ottenere un elemento HTML da una stringa che contiene HTML. È possibile utilizzare il selettore jQuery per fare questo?Come ottenere un elemento HTML da una stringa con jQuery

Fondamentalmente ho una funzione javascript che ottiene un'intera pagina dal server ma ho solo bisogno di un elemento da quella pagina.

Grazie in anticipo

+0

Puoi condividere che cosa si intende per archi e come appare? – Sarfraz

+0

È un po 'oscuro quello che hai. La stringa contiene codice HTML per un singolo elemento o contiene codice per diversi elementi di cui si desidera ottenere uno? – Guffa

risposta

61

Sì, è possibile trasformare la stringa in elementi e selezionare elementi da essa. Esempio:

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

Questo viene chiamato usando 'elements' come [** contesto **] (http://api.jquery.com/jQuery/). È implementato internamente con [**. Find() **] (http://api.jquery.com/find/), quindi un modo equivalente per scrivere quanto sopra è: 'var found = elements.find ('. FindMe '); ' –

+1

Questo metodo (' $ (' selector ', $ (' html string ')) ') non sembra funzionare per me in jQ: 1.6.2 – vol7ron

+8

Non è accaduto perché, come hai detto, è usando 'find()', mentre ne avevo bisogno per usare 'closest()', forse jQ dovrebbe essere modificato. ** Caso problema: ** '$ ('pre', $ ('

foo
bar
'));'. Perché usa find, che guarda solo ai bambini, non troverà mai alcun 'pre's. La soluzione più semplice è aggiungere un involucro. – vol7ron

17

Basta avvolgere il testo HTML nella funzione $. Mi piace

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

Ti amo per avermi detto che è possibile. Questo ha risolto tutti i miei problemi. – jamzsabb

+1

Grazie mille! – salmanhijazi

8

Se si sta caricando una pagina in modo dinamico da un server, allora è possibile destinare un solo elemento dalla pagina caricata utilizzando il seguente modulo con .load()

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

Ad esempio:

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

Dove:
#result è wh la parte della pagina caricata verrà visualizzata nella pagina corrente
ajax/test.html è l'URL a cui viene inviata la richiesta del server
#container è l'elemento nella pagina di risposta che si desidera visualizzare. Solo questo verrà caricato nell'elemento #result. Il resto della pagina di risposta non verrà visualizzato.

3

Basta usare $ .filter

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