2011-12-09 18 views
5

Lo que tengo:Envuelva un lapso de alrededor de un texto en jQuery

<ul id="myId"> 
    <li> 
     My text 
     <ul class="myClass"> 
      <li>blahblahblah</li> 
     </ul> 
    </li> 
</ul> 

Lo que quiero:

<ul id="myId"> 
    <li> 
     <span>My text</span> 
     <ul class="myClass"> 
      <li>blahblahblah</li> 
     </ul> 
    </li> 
</ul> 

no tengo acceso al marcado HTML, y estoy queriendo hacer esto con jQuery , Algo así como:

$('.myClass').get_the_text_ubove().wrap('<span>'); 

debe haber alguna manera de seleccionar 'Mi texto' a pesar de que no tiene ninguna clase/ID

+1

¿Está buscando agregar la clase 'myClass' también, o debería también existir en la sección" lo que tiene "? –

+0

No, lo siento mi pregunta incorrecta, actualizada – Purplefish32

Respuesta

4

Probar:

$('#myId > li').each(
    function(){ 
     $(this.firstChild).wrap('<span></span>'); 
    }); 

JS Fiddle demo.

En lo que respecta a querer añadir el class a la ul:

$('#myId > li').each(
    function(){ 
     $(this.firstChild).wrap('<span></span>'); 
     $(this).find('ul').addClass('myClass'); 
    }); 

JS Fiddle demo.

+0

De hecho; Lo he editado a la respuesta actual ... =) –

+0

Se ha eliminado mi comentario. – Chad

+0

Gracias, voy a mantener su respuesta, es limpia y simple. – Purplefish32

6
$($('#myId ul').addClass('myClass')[0].previousSibling).wrap('<span>'); 

JSFIDDLE DEMO

+1

+1 jQuery es el nuevo Perl :) –

+0

Su respuesta fue lo suficientemente cerca, lo siento por olvidar 'myClass' en mi pregunta, he actualizado la pregunta – Purplefish32

3
var ul = document.getElementById("myId"); 
var li = ul.firstElementChild; 
var text = li.firstChild; 
var ul = li.childNodes[1]; 
ul.classList.add('myClass'); 
var span = document.createElement("span"); 
span.textContent = text.data; 
li.replaceChild(span, text); 

Antiguo DOM moda al rescate.

+0

+1 Esa iba a ser mi próxima tarea (pero no lo haga) olvida agregar la clase, como lo hice al principio). – RightSaidFred

+0

[Aquí hay un violín] (http://jsfiddle.net/Qxkba/2/) ¡Vaya, lo arruiné y agregué la clase al elemento equivocado! – RightSaidFred

+0

@RightSaidFred agregaste el className al ul incorrecto;) [Fixed] (http://jsfiddle.net/Qxkba/3/) – Raynos

Cuestiones relacionadas