2010-04-26 16 views

risposta

5

Ecco la mia idea:

function removeText(element){ 
    var newElement = $('<' + element[0].nodeName + '/>'); 
    element.children().each(function(){ 
     newElement.append(this); 
    }); 
    element.replaceWith(newElement); 
} 
+3

function stripText (elemento) { \t \t var item = elemento [0]; \t \t var newElement = $ ('<' + item.nodeName + '/>'); \t \t for (i = 0; i Mandrake

+0

+1 La soluzione di Mandrake risolve il problema relativo alla rimozione degli attributi dell'elemento. –

-8
$('#someElement').text(''); 
+1

sono u sicuro? rimuove anche i bambini. Forse perché io uso jquery 1.2.3 – aneuryzm

+1

questo rimuove tutti i bambini in 1.4.2 pure – Rudism

+0

Rudismo è corretto. Rimuove tutto all'interno dell'elemento inclusi i bambini. – Davis

-4

non si può fare that.Unless È avvolto da un elemento.

6

Questo funziona per me:

$(elem).html($(elem).html().replace($(elem).text(),'')); 

Questa impostare il contenuto HTML, senza il contenuto del testo, significa che qualsiasi tag html all'interno di elem sarà mantenere senza i cambiamenti.

prima:

<div>Hello<input type="text" name="username" value="world!"/></div> 

dopo:

<div><input type="text" name="username" value="world!"/></div> 

bye

+2

Per favore aggiungi qualche spiegazione. –

+1

Ci sono alcuni problemi con questo: 1) modificare HTML con funzioni di stringa come replace può rompere il markup (ad esempio se il testo è '' o '' '), 2) qualsiasi cosa che corrisponda al testo viene sostituita (ad es. il testo è 'utente', quindi l'attributo nome cambierà), 3) Se il testo è distribuito tra i bambini, non funzionerà (ad esempio "

Hello
World
") – Warbo

39

migliore e la soluzione facile da rimuovere tutti gli elementi di testo che certo div è

$("#firstDiv").contents().filter(function(){ 
    return (this.nodeType == 3); 
}).remove(); 
+3

Soluzione eccellente. Funziona per me. – jwinn

Problemi correlati