2013-04-02 11 views
11

Questo è il mio html.Scollega elemento selezionato Javascript o Jquery

<span id="current" class="green unselctable" data-original-title="" title=""> 
    Lorem Ipsum is simply dummy 
</span> 

sto selezionando con con $("#current") ma se uso la funzione di decifratura jQuery viene rimosso il tag principale.

C'è un modo per rimuovere lo span in JavaScript o jQuery senza analizzare la stringa e aggiungerla alla dom?

Modifica Voglio mantenere il contenuto del div. Voglio solo rimuovere il tag.

+2

Quindi vuoi che "Lorem ..." esista ancora? – vol7ron

+0

Sì, tutto il codice html all'interno dell'elemento selezionato, senza aggiungere un altro wrapper – trebor

risposta

29

È possibile concatenare contents() in unwrap():

$("#current").contents().unwrap(); 

contents() torneranno tutti i figli di #current, tra cui i nodi di testo, e unwrap() può essere applicato ai nodi di testo.

+1

@ vol7ron ma in 9 minuti, grazie mille a tutti voi – trebor

+0

Nel [test] (http://jsperf.com/unwrap-vs-replacewith) sembra che sostituireWith sia più veloce, ma per chiarezza, penso che mi piace scartare meglio. – vol7ron

+0

hi Frédéric Hamidi, questa soluzione lascia l'elemento unwrapped come stringa. Quindi la pagina visualizza l'elemento html scartato come stringa. Puoi per favore aiutare? Grazie in anticipo. –

4
var $current = $('#current'); 
$current.replaceWith($current.text()); 

Fiddle con le due risposte correnti - gioco di parole?

unwrap vs replaceWith

+0

I miei due centesimi: l'interlocutore ha detto "senza analizzare la stringa e aggiungendola al DOM", e passare una stringa a "replaceWith()" fa esattamente questo. Anche allora, usare 'html()' piuttosto che 'text()' potrebbe rispondere meglio alla domanda (se il '' finisce per contenere altri elementi). Detto questo, la tua soluzione è probabilmente più veloce della mia, sì :) –

+1

Se si tira il textnode, è davvero un parse? :) haha, ma si. Penso che in entrambi i casi potrebbe esserci copia/accodamento in corso - non ho guardato la fonte jq tra un po ', anche se – vol7ron

-1

appena colpito questa stessa domanda. Penso che questo potrebbe essere leggermente migliore ... stesso effetto, ma penso che jQuery debba fare meno magia per far funzionare questo.

$("#current").replaceWith($("#current").contents()); 
Problemi correlati