2012-05-06 15 views
7

envolver tengo este código en HTMLmejor manera de cambiar elementos usando jQuery

<span id="s">Attachments</span> 

Cómo utilizar jQuery para conmutar el elemento SPAN exterior con el siguiente bloque de código de la tabla, por lo que el texto "Adjuntos" se envuelve con el elemento de la mesa

<table id="t"> 
    <tr> 
    <td>Attachments</td> 
    </tr> 
</table> 
+0

encontrado una solución a este problema: http://stackoverflow.com/questions/17872320/jquery-changing-wrapping-tag –

Respuesta

2

Se puede crear una tabla con un tr y td, insertar el contenido HTML desde el lapso en que el nuevo elemento td, insertar la tabla inmediatamente después de un fragmento, y finalmente, eliminar el lapso.

$("<table id='t'><tr><td>" + $("#s").html() + 
    "</td></tr></table").insertAfter("#s"); 

$("#s").remove(); 

¿Asumo que por "golpe" se entiende "intercambio"? Entonces, es por eso que eliminé el tramo original. Si este no es el caso, simplemente omita la llamada remove.

+0

Gracias! puede ser que tengas una idea de por qué esto no funciona? http://jsfiddle.net/5VG6F/ –

+1

Pruebe esto en su lugar: http://jsfiddle.net/Fh24j/. Tuve que cambiar el jsFiddle para no usar onLoad ya que no fue capaz de definir tu función. También simplifiqué el código y puse insertAfter en el mismo comando que crea la tabla. – jmort253

+0

Eliminando mi comentario anterior. –

2

Envolver el elemento #s, luego reemplazarlo con su propio contenido:

$("#s") 
    .wrap("<table id='t'><tr><td></td></tr></table>") 
    .replaceWith(function(){ 
     return this.innerHTML; 
    }); 

Demostración: http://jsbin.com/elotan/edit#source

Tras un nuevo debate en los comentarios, parece que la OP quería ser capaz de crear una tabla ad-hoc, e inserte #s en cualquiera de sus td. Lo siguiente puede ser mejor:

$("<table>", { 
    id:'t', html:'<tr><td>Foo</td><td>' + $("#s").html() + '</td></tr>' 
}).replaceAll("#s"); 
+0

¡Esto es genial! Estoy un poco confundido, ¿cómo sabe dónde insertar el texto? Por ejemplo: http: //jsbin.com/asinop ¿Cómo lo sabe para insertar el "Adjunto" en la celda-1, pero no en la celda-2? –

+1

@RegisteredUser La primera celda se considera el primer contenedor más interno. Como tal, es la ubicación eventual utilizada. Sin embargo, evitaría complicarme demasiado con tu envoltura. – Sampson

+0

Bien, pero solo una pregunta. ¿Qué pasa si quiero que la ubicación sea la segunda TR/TD como contenedor? ¿Qué modificación debería hacer? –

Cuestiones relacionadas