usuario1763812
¿Estoy usando el método jquery appendTo correctamente en el siguiente código?
Lo pregunto porque parece que se muestra correctamente cuando lo pruebo en jsfiddle pero cuando uso el mismo código en mi servidor local (en FF, IE y Chrome) se muestra con cuadros alargados:
Estoy asumiendo que estoy haciendo algo mal. Gracias.
HTML
<div class="ws-css-table" >
<div class="ws-css-table-tr">
<div class="ws-css-table-td"></div>
<div class="ws-css-table-td"></div>
</div>
<div class="ws-css-table-tr">
<div class="ws-css-table-td"></div>
<div class="ws-css-table-td"></div>
</div>
<div class="ws-css-table-tr">
<div class="ws-css-table-td"></div>
<div class="ws-css-table-td"></div>
</div>
</div>
<br/>
<button id="css-icol">Col +</button><br/><br/>
jquery
$('#css-icol').click(function(){
$(".ws-css-table-td:last").clone().appendTo('.ws-css-table-tr');
var tblArr = $('.ws-css-table > .ws-css-table-tr').map(function ()
{
return $(this).children().map(function ()
{
return $(this);
});
});
lastCol = $('.ws-css-table-tr:first > .ws-css-table-td').length;
for (r=0; r<$('.ws-css-table-tr').length; r++)
tblArr[r][lastCol-1].text('X');
});
CSS
.ws-css-table {
display: table;
}
.ws-css-table-tr {
display: table-row;
}
.ws-css-table-td {
display: table-cell;
border:1px solid #000;
width: 15px;
height:15px;
text-align:center;
vertical-align:middle;
}
Pavel Gatnar
Tienes un error en esta línea:
$(".ws-css-table-td:last").clone().appendTo('.ws-css-table-tr');
Selecciona la última celda de la tabla y la clona en cada fila. Cuando desee copiar la columna, debe seleccionar las últimas celdas en todas las filas, luego debe iterar sobre las celdas clonadas. Finalmente, el método after
aquí es más elegante…
$(".ws-css-table-td:last-child")
.each(function(){
var $this=$(this)
$this.after($this.clone())
})
Para crear una columna vacía use:
$(".ws-css-table-td:last-child")
.after("<div class="ws-css-table-td"/>")
-
Selector elegante, por cierto.
– nórdico
20/10/2015 a las 18:21
-
@nrodic gracias, jquery está aquí para hacer que el código sea elegante
– Pavel Gatnar
20 oct 2015 a las 18:39
El código se ve bien, parece que puede verse afectado por elementos CSS que no se muestran en el ejemplo.
– Sean Phillips
19/10/2015 a las 11:38
Gracias por la respuesta. No tengo ningún otro elemento CSS que yo sepa. ¿Hay una manera de comprobar?
– usuario1763812
19/10/2015 a las 11:47
Además, cuando agrego más columnas a la “cuadrícula”, aparecen ‘X’ dentro de los cuadros.
– usuario1763812
19 de octubre de 2015 a las 12:18
¿Trabajando bien? jsfiddle.net/110ewzuk
– Joaquín M.
19 de octubre de 2015 a las 12:22
Use las herramientas Firebug o Chrome Developer para verificar el tipo de documento que está procesando (especialmente importante para IE) y qué css se está utilizando para procesar (Firebug/HTML/Computed) o (Firebug/HTML/Layout).
– Ewen
19/10/2015 a las 14:02