Estoy usando jQuery UI clasificable para hacer que la cuadrícula de mi tabla se pueda ordenar. El código parece funcionar bien, pero debido a que no estoy agregando ancho a td
s, cuando lo arrastro tr
, reduce el contenido.
Por ejemplo; si la fila de mi tabla es de 500 px cuando comienzo a arrastrar, se convierte en 300 px. Supongo que eso está sucediendo porque no se define ancho en la cuadrícula. Eso es porque estoy usando dos clases para la td
s ( fix
y liquid
).
La fix
clase hace td
que el ancho del contenido sea igual y liquid
hace que el td
ancho sea 100%. Es mi enfoque para la tabla de cuadrícula sin tener que asignar ancho a td
s.
¿Alguna idea de cómo hacer que mi trabajo funcione con mi enfoque?
Respuestas:
Encontré la respuesta aquí .
Lo modifiqué ligeramente para clonar la fila, en lugar de agregar anchos al original:
fuente
$(this).width($originals.eq(index).outerWidth());
Creo que puede ayudar:
fuente
La respuesta seleccionada aquí es una solución realmente agradable, pero tiene un error grave que es evidente en el violín JS original ( http://jsfiddle.net/bgrins/tzYbU/ ): intente arrastrar la fila más larga ( Dios lo bendiga, Sr. . Rosewater ), y el resto de los anchos de celda colapsan.
Esto significa que fijar los anchos de las celdas en la celda arrastrada no es suficiente; también debe corregir los anchos en la tabla.
JS Fiddle: http://jsfiddle.net/rp4fV/3/
Esto soluciona el problema del colapso de la tabla después de arrastrar la primera columna, pero introduce una nueva: si cambia el contenido de la tabla, los tamaños de celda ahora se arreglan.
Para solucionar este problema al agregar o cambiar contenido, deberá borrar los anchos establecidos:
Luego agregue su contenido, luego corrija los anchos nuevamente.
Esto todavía no es una solución completa, ya que (especialmente con una tabla) necesita un marcador de posición de caída. Para eso necesitamos agregar una función al inicio que construya el marcador de posición:
JS Fiddle: http://jsfiddle.net/rp4fV/4/
fuente
$(".must-have-class").css("height", $(ui.item).outerHeight());
Parece que clonar la fila no funciona bien en IE8, pero la solución original sí.
Probado con el jsFiddle .
fuente
Llame a este código siguiente cuando su tabla esté lista para ser ordenada, esto se asegurará de que sus elementos td se arreglen sin romper la estructura de la tabla.
fuente
th
igual de bientd
. Repara el colapso de la fila arrastrada y el colapso de la tabla, pero a costa de arreglar los anchos.jsFiddle
Después de muchos intentos diferentes, acabo de probar una solución simple que completa la solución de Dave James Miller para evitar que la tabla se encoja mientras arrastra la fila más grande. Espero que ayude :)
fuente
La solución de Keith está bien, pero produjo un pequeño caos en Firefox que no sumó los colspans sino que los indicó. (El viejo tipo de cuerda js duele en la rodilla)
reemplazando esta línea:
con:
Soluciona el problema. (Como js se ve obligado a tratar las variables como números en lugar de cadenas)
fuente
La respuesta de Dave James Miller funcionó para mí, pero debido al diseño de las divisiones del contenedor en mi página, el ayudante que arrastra con el cursor del mouse está desplazado de la posición de mi mouse. Para solucionar eso, agregué lo siguiente a la devolución de llamada auxiliar
Aquí está la devolución de llamada completa con la línea anterior agregada:
Hubiera agregado esto como un comentario a la respuesta de Dave, pero no tenía suficiente representante en esta cuenta.
fuente
Parece que el
disableSelection()
método es malo y está en desuso hoy en día. Ya no puedo usar entradas de texto dentro de la fila ordenable enMozilla Firefox 35.0
. Simplemente ya no es enfocable.fuente
fuente
fuente
Aplique el ordenable al elemento tbody de la tabla y simplemente configure el asistente para 'clonar', como se describe en la API de jquery-ui
fuente