Estou tentando adicionar uma linha a uma tabela e fazer com que essa linha deslize para exibição, no entanto, a função slownown parece adicionar uma exibição: estilo de bloco à linha da tabela que atrapalha o layout.
Alguma idéia de como contornar isso?
Aqui está o código:
$.get('/some_url',
{ 'val1': id },
function (data) {
var row = $('#detailed_edit_row');
row.hide();
row.html(data);
row.slideDown(1000);
}
);
fadeIn
efadeOut
trabalhar em linhas da tabela e fazer um efeito visual alternativo agradável (testado no Firefox apenas)Respostas:
Não há suporte para animações nas linhas da tabela.
Do "Learning jQuery" de Chaffer e Swedberg
Você pode agrupar seu conteúdo td em uma div e usar o slideDown nela. Você precisa decidir se a animação vale a marcação extra.
fonte
$('tr').find('td').animate({padding: '0px'}, {duration: 200});
Simplesmente envolvo o tr dinamicamente e removo-o quando o slideUp / slideDown for concluído. É uma sobrecarga muito pequena adicionar e remover uma ou algumas tags e depois removê-las quando a animação estiver concluída. Não vejo nenhum atraso visível.
SlideUp :
Deslize para baixo:
Eu tenho que prestar homenagem ao fletchzone.com quando peguei o plug-in dele e o tirei de volta ao que foi dito acima, parabéns.
fonte
Aqui está um plug-in que eu escrevi para isso, leva um pouco da implementação do Fletch, mas o meu é usado apenas para deslizar uma linha para cima ou para baixo (sem inserir linhas).
Uso básico:
Passe as opções do slide como argumentos individuais:
Basicamente, para a animação deslizante, o plug-in agrupa o conteúdo das células nos DIVs, anima-os e os remove e vice-versa para o deslizamento para cima (com algumas etapas extras para se livrar do preenchimento da célula). Ele também retorna o objeto em que você o chamou, para que você possa encadear métodos como este:
Espero que isso ajude alguém.
fonte
Você pode tentar agrupar o conteúdo da linha em um
<span>
e ter o seu seletor$('#detailed_edit_row span');
- um pouco imprudente, mas eu apenas testei e ele funciona. Eu também tentei atable-row
sugestão acima e ela não pareceu funcionar.update : Eu estou brincando com esse problema e, de todas as indicações, o jQuery precisa do objeto em que ele executa o slideDown para ser um elemento de bloco. Então, não há dados. Consegui invocar uma tabela em que usei o slideDown em uma célula e isso não afetou o layout, por isso não tenho certeza de como a sua está configurada. Eu acho que sua única solução é refatorar a tabela de tal maneira que esteja tudo bem com essa célula sendo um bloco, ou apenas
.show();
a coisa mais maldita. Boa sorte.fonte
<td><div style="display:block">contents</div></td>
Selecione o conteúdo da linha assim:
.contents () - obtém os filhos de cada elemento no conjunto de elementos correspondentes, incluindo nós de texto e comentário.
fonte
$('tr > td').contents().slideDown()
. Certifique-se de que todo o conteúdo dentro da coluna esteja envolto em uma tag, ou seja, ter<td>Some text</td>
não funcionará. Esta é a solução mais simples.Estou um pouco atrasado em responder isso, mas achei uma maneira de fazê-lo :)
Acabei de colocar um elemento div dentro das tags de dados da tabela. quando é definido como visível, à medida que a div se expande, a linha inteira desce. então diga a ele para diminuir novamente (depois o tempo limite para que você veja o efeito) antes de ocultar a linha da tabela novamente :)
Espero que isso ajude alguém!
fonte
Eu neded uma tabela com linhas ocultas que deslizam dentro e fora de vista no clique da linha.
Mostrar snippet de código
fonte
Tenha uma linha da tabela com tabela aninhada:
Para slideDown the row:
Nota: a linha e seu conteúdo (aqui estão
"table"
) devem estar ocultos antes do início da animação.Para deslizarUp da linha:
O segundo parâmetro (
function()
) é um retorno de chamada.Simples!!
Observe que também existem várias opções que podem ser adicionadas como parâmetros das funções deslizar para cima / baixo (as mais comuns são as durações de
'slow'
e'fast'
).fonte
Eu consegui contornar isso usando os elementos td na linha:
Animar a própria linha causa um comportamento estranho, principalmente problemas de animação assíncrona.
Para o código acima, estou destacando uma linha que é arrastada e solta na tabela para destacar que a atualização foi bem-sucedida. Espero que isso ajude alguém.
fonte
effect is not a function
Usei as idéias fornecidas aqui e enfrentei alguns problemas. Eu consertei todos eles e tenho uma única linha que gostaria de compartilhar.
Ele usa css no elemento td. Reduz a altura para 0px. Dessa forma, apenas a altura do conteúdo do div-wrapper recém-criado dentro de cada elemento td é importante.
O slideUp está lento. Se você o tornar ainda mais lento, poderá perceber alguma falha. Um pequeno salto no começo. Isso ocorre devido à configuração css mencionada. Mas sem essas configurações, a linha não diminuiria em altura. Somente seu conteúdo o faria.
No final, o elemento tr é removido.
A linha inteira contém apenas JQuery e nenhum Javascript nativo.
Espero que ajude.
Aqui está um código de exemplo:
fonte
Quero deslizar o corpo inteiro e gerenciei esse problema combinando os efeitos de desbotamento e deslizamento.
Fiz isso em três etapas (a segunda e a terceira etapas são substituídas caso você queira deslizar para baixo ou para cima)
Exemplo de slideUp:
fonte
Eu tive problemas com todas as outras soluções oferecidas, mas acabei fazendo essa coisa simples que é suave como manteiga.
Configure seu HTML da seguinte maneira:
Em seguida, configure seu javascript da seguinte maneira:
Basicamente, torne a linha "invisível" 0px alta, com uma div dentro.
Use a animação na div (não na linha) e defina a altura da linha como 1px.
Para ocultar a linha novamente, use a animação oposta na div e defina a altura da linha novamente como 0px.
fonte
Gostei do plugin que Vinny escreveu e tem usado. Porém, no caso de tabelas dentro da linha deslizante (tr / td), as linhas da tabela aninhada sempre ficam ocultas, mesmo depois de deslizadas. Então, fiz um hack rápido e simples no plug-in para não ocultar as linhas da tabela aninhada. Apenas mude a seguinte linha
para
que encontra apenas tds imediatos e não aninhados. Espero que isso ajude alguém usando o plug-in e tenha tabelas aninhadas.
fonte
Gostaria de adicionar um comentário à postagem de # Vinny, mas não tenho o representante, por isso tenho que postar uma resposta ...
Foi encontrado um erro no seu plug-in - quando você passa um objeto com argumentos, eles são sobrescritos se nenhum outro argumento for passado. Facilmente resolvido alterando a ordem em que os argumentos são processados, código abaixo. Também adicionei uma opção para destruir a linha após o fechamento (apenas porque eu precisava dela!): $ ('# Row_id'). SlideRow ('up', true); // destrói a linha
fonte
Se você precisar deslizar e desbotar uma linha da tabela ao mesmo tempo, tente usar estas:
fonte
você pode usar estes métodos como:
fonte
Posso fazer isso se você definir os td na linha para exibir nenhum ao mesmo tempo em que começar a animar a altura na linha
fonte
Este código funciona!
fonte
http://jsfiddle.net/PvwfK/136/
});
fonte
O plugue oferecido por Vinny é muito próximo, mas eu encontrei e corrigi alguns pequenos problemas.
Para células da tabela com muito conteúdo (como uma tabela aninhada com muitas linhas), chamando slideRow ('up'), independentemente do valor slideSpeed fornecido, reduziria a exibição da linha assim que a animação de preenchimento fosse concluída . Corrigi-o para que a animação do preenchimento não seja acionada até que o método slideUp () no invólucro esteja pronto.
fonte
Correção rápida / fácil:
Use JQuery .toggle () para mostrar / ocultar as linhas ao clicar em Row ou Anchor.
Uma função precisará ser escrita para identificar as linhas que você deseja ocultar, mas alternar cria a funcionalidade que você está procurando.
fonte