2010-08-06 17 views

risposta

67

Questo dovrebbe fare il trucco:

$('#YourDivId').contents().filter(function(){ 
    return this.nodeType === 3; 
})​.remove();​ 
+0

sembra una risposta eccellente ma puoi spiegare il lavoro in giro? che cos'è il tipo di nodo === 3? – Suresh

+1

@eirenaios https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType –

3

si può fare con un semplice dom:

var div=$("div")[0]; 
if(div.childNodes.length) 
    for(var i=0;i<div.childNodes.length;i++) 
    { 
     if(div.childNodes[i].nodeType===3) 
      div.removeChild(div.childNodes[i]); 
    } 
+0

questo 'div.removeChild (div);' non mi sembra giusto! – jigfox

+0

Spiacenti, aggiornato ... – mck89

2

Il modo più semplice sarebbe qualcosa di simile:

$('#div').html($('<div>').append($('*', '#div')).html()); 
-6
$('#yourDiv').text(''); 

Questo rimuoverà il contenuto del testo

+2

Questo metodo rimuove tutto, inclusi gli elementi secondari. Non è corretto – Davis

-6
$('#yourDiv').text(''); 

Questo sarà rimuovere il contenuto di testo

+2

No, rimuove tutto all'interno del div. – StinkyCat

+0

Sono in ritardo per lo show, ma perché Krish ha ottenuto -1 per questo e Gary ha ottenuto +1. – snowYetis

2

Ebbene questo probabilmente non sarà il modo migliore, ma ho salvato il div in una variabile e poi dopo che ho rimosso tutto il contenuto nel tag ho usato append:

$('.wpcf7 form p').each(function(i){ 
    var el = $(this).find('span'); 
    if(i==4) 
    el = $(this).find('input'); 
    $(this).empty(); 
    $(this).append(el); 
}); 
9

Assumendo la seguente struttura HTML:

<div class="element-to-clean"> 
    Content to be filtered out. 
    <span class="element-to-leave-intact"> 
    Content to be left inthe element. 
    </span> 
</div> 

è possibile ottenere il vostro comportamento desiderato utilizzando il seguente codice JavaScript + jQuery 2.1:

$('.element-to-clean').html($('.element-to-clean').children()); 
Problemi correlati