2012-11-30 11 views
10

Ho bisogno di avvolgere il testo all'interno di un div con uno span.Testo a capo all'interno dell'elemento

<div class="item"> 
    <span class="count"></span> 
    Text that needs to be wrapped. 
</div> 

<div class="item"> 
    <span class="count"></span> 
    Text that needs to be wrapped. 
</div> 

<div class="item"> 
    <span class="count"></span> 
    Text that needs to be wrapped. 
</div> 

provato ma non funzionava ...

$('.item').text().wrap('<span class="new" />'); 

risposta

1
$('.item').html($('<span class="new">').text($(".item").text())) 
+0

Questo non va a capo il suo nodo di testo all'interno di un arco .... e che è #id - lui ha classi, ecc - usare quelli. –

2

singolo DIV:

var txt = $('.count')[0].nextSibling; 
$(txt).wrap('<span class="new" />'); 

JSfiddle

DIV multipli:

var markers = document.querySelectorAll('.count'), 
    l = markers.length, 
    i, txt; 

for (i = l - 1; i >= 0; i--) { 
    txt = markers[i].nextSibling; 
    $(txt).wrap('<span class="new" />'); 
} 

JSFiddle

+0

Spiacente, il mio esempio ha avuto un singolo div, potrebbe essere più: http://jsfiddle.net/TELV6/1/ – santa

+0

No prob. Controlla la risposta aggiornata, @santa – spliter

+0

+1 jsfiddle ... qualcosa che faccio sempre. grazie – santa

8

Come su

$('.item').contents().filter(function(){ 
    return this.nodeType == 3 && $.trim(this.nodeValue).length; 
}).wrap('<span class="new" />'); 

http://jsfiddle.net/mowglisanu/x5eFp/3/

+1

Sì, ha funzionato! Piuttosto stravagante ... – santa

+0

Stavo per pubblicare quasi la stessa cosa, puoi ottimizzarlo sostituendo '$ .trim ($ (this) .text()). Length' per' $ .trim (this.nodeValue)! = '' ' – Nelson

+0

Ho notato che   nel div è stato anche spostato ... mentre la soluzione di @ wirey no. Grazie per l'aiuto. – santa

1

mio prendere su questo:

$('.item').contents().each(function() { 
    if (this.nodeType == 3 && $.trim(this.nodeValue) != '') { 
     $(this).wrap('<span class="textwrapped"></span>'); 
    } 
}); 

La parte $.trim è necessario in quanto le schede utilizzate per codice html trattino sono anche i nodi di testo che dobbiamo filtrare (ad es. come la scheda a destra prima <span class="count">)

Vedere lavorare demo

Problemi correlati