Estou usando a interface do usuário do jQuery classificável para tornar minha grade da tabela classificável. O código parece funcionar bem, mas como não estou adicionando largura a td
s, quando arrasto o tr
botão reduz o conteúdo.
Por exemplo; se a linha da minha tabela tiver 500 px quando eu começar a arrastar, ela se tornará 300 px. Suponho que isso esteja acontecendo porque nenhuma largura é definida na grade. Isso porque eu estou usando duas classes para os td
( fix
e liquid
).
A fix
classe faz com que a td
igual à largura do conteúdo e liquid
faz com que a td
largura de 100%. É minha abordagem para tabela de grade sem ter que atribuir largura a td
s.
Alguma idéia de como fazer um trabalho classificável com minha abordagem?
Respostas:
Encontrei a resposta aqui .
Modifiquei-o levemente para clonar a linha, em vez de adicionar larguras ao original:
fonte
$(this).width($originals.eq(index).outerWidth());
Eu acho que isso pode ajudar:
fonte
A resposta selecionada aqui é uma solução muito boa, mas tem um bug grave que é aparente no violino JS original ( http://jsfiddle.net/bgrins/tzYbU/ ): tente arrastar a linha mais longa ( Deus o abençoe, senhor) (Água de rosas ) e o restante das larguras das células colapsam.
Isso significa que corrigir as larguras das células na célula arrastada não é suficiente - você também precisa corrigir as larguras na tabela.
JS Fiddle: http://jsfiddle.net/rp4fV/3/
Isso corrige o problema do recolhimento da tabela depois que você arrasta a primeira coluna, mas introduz uma nova: se você alterar o conteúdo da tabela, os tamanhos das células serão corrigidos.
Para contornar isso ao adicionar ou alterar o conteúdo, você precisa limpar as larguras definidas:
Adicione seu conteúdo e corrija as larguras novamente.
Essa ainda não é uma solução completa, pois (especialmente com uma tabela) você precisa de um espaço reservado para soltar. Para isso, precisamos adicionar uma função no início que construa o espaço reservado:
JS Fiddle: http://jsfiddle.net/rp4fV/4/
fonte
$(".must-have-class").css("height", $(ui.item).outerHeight());
Parece que a clonagem da linha não funciona bem no IE8, mas a solução original funciona.
Testado com o jsFiddle .
fonte
Chame este código a seguir quando sua tabela estiver pronta para ser classificada, isso garantirá que seus elementos td sejam corrigidos sem quebrar a estrutura da tabela.
fonte
th
tambémtd
. Ele corrige o recolhimento da linha arrastada e a tabela, mas com o custo de corrigir as larguras.jsFiddle
Depois de várias tentativas diferentes, tentei apenas uma solução simples que completa a solução de Dave James Miller para evitar que a tabela encolha enquanto arrasta a maior linha. Espero que ajude :)
fonte
A solução de Keith é boa, mas causou um pequeno estrago no Firefox, que não adicionou os colspans, mas os cedeu. (A velha dor tipo js string no joelho)
substituindo esta linha:
com:
Corrige o problema. (Como js é forçado a tratar as variáveis como números em vez de cadeias)
fonte
A resposta de Dave James Miller funcionou para mim, mas devido ao layout das divs do contêiner na minha página, o auxiliar que arrasta com o cursor do mouse é deslocado da posição do mouse. Para corrigir isso, adicionei o seguinte ao retorno de chamada auxiliar
Aqui está o retorno de chamada completo com a linha acima adicionada:
Eu adicionaria isso como um comentário à resposta de Dave, mas não tinha representante suficiente nessa conta.
fonte
Parece que
disableSelection()
- o método está ruim e obsoleto hoje em dia. Não posso mais usar entradas de texto dentro de uma linha classificávelMozilla Firefox 35.0
. Apenas não é mais focável.fonte
fonte
fonte
Aplique a classificável ao elemento tbody da tabela e defina o auxiliar como 'clone', conforme descrito na API do jquery-ui
fonte