J'essaie d'ajouter une ligne à un tableau et de faire glisser cette ligne dans la vue, mais la fonction de glissement semble ajouter un style d'affichage: bloc à la ligne du tableau qui gâche la disposition.
Avez-vous des idées pour contourner ce problème?
Voici le code:
$.get('/some_url',
{ 'val1': id },
function (data) {
var row = $('#detailed_edit_row');
row.hide();
row.html(data);
row.slideDown(1000);
}
);
fadeIn
etfadeOut
travailler sur les lignes du tableau et faire un bel effet visuel alternatif (testé sur Firefox uniquement)Réponses:
Les animations ne sont pas prises en charge sur les lignes du tableau.
Extrait de "Learning jQuery" de Chaffer et Swedberg
Vous pouvez envelopper votre contenu td dans une div et utiliser le slideDown à ce sujet. Vous devez décider si l'animation vaut le balisage supplémentaire.
la source
$('tr').find('td').animate({padding: '0px'}, {duration: 200});
J'emballe simplement le tr dynamiquement puis le supprime une fois le slideUp / slideDown terminé. C'est un assez petit frais généraux ajoutant et supprimant une ou deux balises, puis les supprimant une fois l'animation terminée, je ne vois aucun décalage visible le faire.
SlideUp :
Glisse vers le bas:
Je dois rendre hommage à fletchzone.com alors que je prenais son plugin et le retirais de ce qui précède, applaudit mon pote.
la source
Voici un plug-in que j'ai rédigé pour cela, il prend un peu de l'implémentation de Fletch, mais le mien est utilisé uniquement pour faire glisser une ligne vers le haut ou vers le bas (pas d'insertion de lignes).
Utilisation de base:
Passez les options de diapositive comme arguments individuels:
Fondamentalement, pour l'animation de diapositive vers le bas, le plug-in enveloppe le contenu des cellules dans les DIV, les anime, puis les supprime, et vice versa pour la diapositive vers le haut (avec quelques étapes supplémentaires pour se débarrasser du remplissage des cellules). Il renvoie également l'objet sur lequel vous l'avez appelé, vous pouvez donc enchaîner des méthodes comme ceci:
J'espère que cela aide quelqu'un.
la source
Vous pouvez essayer d'envelopper le contenu de la ligne dans un
<span>
et d'avoir votre sélecteur$('#detailed_edit_row span');
- un peu hackish, mais je viens de le tester et cela fonctionne. J'ai également essayé latable-row
suggestion ci-dessus et cela ne semble pas fonctionner.mise à jour : j'ai joué avec ce problème, et de toutes les indications jQuery a besoin de l'objet sur lequel il exécute slideDown pour être un élément de bloc. Donc, pas de dés. J'ai pu évoquer un tableau où j'ai utilisé slideDown sur une cellule et cela n'a pas affecté la disposition du tout, donc je ne sais pas comment le vôtre est configuré. Je pense que votre seule solution est de refaçonner la table de manière à ce que cette cellule soit un bloc, ou juste
.show();
la fichue chose. Bonne chance.la source
<td><div style="display:block">contents</div></td>
Sélectionnez le contenu de la ligne comme ceci:
.contents () - Récupère les enfants de chaque élément dans l'ensemble des éléments correspondants, y compris les nœuds de texte et de commentaire.
la source
$('tr > td').contents().slideDown()
. Assurez-vous que tout le contenu à l'intérieur de la colonne est enveloppé dans une balise, c'est-à-dire qu'avoir<td>Some text</td>
ne fonctionnera pas. C'est la solution la plus simple.Je suis un peu en retard pour répondre à cela, mais j'ai trouvé un moyen de le faire :)
Je viens de mettre un élément div à l'intérieur des balises de données de la table. lorsqu'elle est définie comme visible, au fur et à mesure que le div se développe, la ligne entière descend. puis dites-lui de disparaître (puis de temporiser pour voir l'effet) avant de masquer à nouveau la ligne du tableau :)
J'espère que cela aide quelqu'un!
la source
J'ai créé un tableau avec des lignes cachées qui se glissent dans et hors de la vue lors du clic de ligne.
Afficher l'extrait de code
la source
Avoir une ligne de table avec une table imbriquée:
Pour faire glisser la ligne vers le bas :
Remarque: la ligne et son contenu (le voici
"table"
) doivent être cachés avant le début de l'animation.Pour faire glisser la ligne:
Le deuxième paramètre (
function()
) est un rappel.Facile!!
Notez qu'il existe également plusieurs options qui peuvent être ajoutées en tant que paramètres des fonctions de défilement vers le haut / vers le bas (les plus courantes étant les durées de
'slow'
et'fast'
).la source
J'ai contourné cela en utilisant les éléments td de la ligne:
L'animation de la ligne elle-même provoque un comportement étrange, principalement des problèmes d'animation asynchrone.
Pour le code ci-dessus, je souligne une ligne qui est glissée et déposée dans le tableau pour souligner que la mise à jour a réussi. J'espère que cela aide quelqu'un.
la source
effect is not a function
J'ai utilisé les idées fournies ici et j'ai rencontré des problèmes. Je les ai tous réparés et j'ai une doublure lisse que je voudrais partager.
Il utilise css sur l'élément td. Il réduit la hauteur à 0px. De cette façon, seule la hauteur du contenu du div-wrapper nouvellement créé à l'intérieur de chaque élément td est importante.
Le slideUp est lent. Si vous le rendez encore plus lent, vous pourriez réaliser un petit problème. Un petit saut au début. Cela est dû au paramètre css mentionné. Mais sans ces paramètres, la ligne ne diminuerait pas en hauteur. Seul son contenu le ferait.
À la fin, l'élément tr est supprimé.
La ligne entière ne contient que JQuery et pas de Javascript natif.
J'espère que ça aide.
Voici un exemple de code:
la source
Je veux faire glisser tout le corps et j'ai réussi ce problème en combinant les effets de fondu et de diapositive.
Je l'ai fait en 3 étapes (les 2e et 3e étapes sont remplacées au cas où vous voudriez glisser vers le bas ou vers le haut)
Exemple de slideUp:
la source
J'ai eu des problèmes avec toutes les autres solutions proposées mais j'ai fini par faire cette chose simple qui est lisse comme du beurre.
Configurez votre HTML comme ceci:
Ensuite, configurez votre javascript comme ceci:
Fondamentalement, rendez la ligne "invisible" haute de 0 px, avec un div à l'intérieur.
Utilisez l'animation sur le div (pas sur la ligne), puis définissez la hauteur de la ligne sur 1 px.
Pour masquer à nouveau la ligne, utilisez l'animation opposée sur la div et redéfinissez la hauteur de la ligne sur 0 px.
la source
J'ai aimé le plugin que Vinny a écrit et utilise. Mais dans le cas de tables à l'intérieur d'une ligne coulissante (tr / td), les lignes de la table imbriquée sont toujours masquées même après avoir glissé vers le haut. J'ai donc fait un hack simple et rapide dans le plugin pour ne pas cacher les lignes de la table imbriquée. Modifiez simplement la ligne suivante
à
qui ne trouve que les tds immédiats et non imbriqués. J'espère que cela aide quelqu'un à utiliser le plugin et à avoir des tables imbriquées.
la source
Je voudrais ajouter un commentaire au message de # Vinny, mais je n'ai pas de représentant, alors je dois poster une réponse ...
Trouvé un bug avec votre plugin - lorsque vous passez simplement un objet avec des arguments, ils sont remplacés si aucun autre argument n'est transmis. Facilement résolu en modifiant l'ordre de traitement des arguments, code ci-dessous. J'ai également ajouté une option pour détruire la ligne après la fermeture (uniquement si j'en avais besoin!): $ ('# Row_id'). SlideRow ('up', true); // détruit la ligne
la source
Si vous devez faire glisser et estomper une ligne de tableau en même temps, essayez de les utiliser:
la source
vous pouvez utiliser ces méthodes comme:
la source
Je peux le faire si vous définissez les td dans la ligne pour n'en afficher aucun en même temps que vous commencez à animer la hauteur sur la ligne
la source
Ce code fonctionne!
la source
http://jsfiddle.net/PvwfK/136/
});
la source
La prise offerte par Vinny est vraiment proche, mais j'ai trouvé et corrigé quelques petits problèmes.
Pour les cellules de tableau avec beaucoup de contenu (comme un tableau imbriqué avec beaucoup de lignes), en appelant slideRow ('up'), quelle que soit la valeur slideSpeed fournie, cela réduirait la vue de la ligne dès que l'animation de remplissage était terminée . Je l'ai corrigé pour que l'animation de remplissage ne se déclenche pas tant que la méthode slideUp () sur le wrapping n'est pas terminée.
la source
Solution rapide / facile:
Utilisez JQuery .toggle () pour afficher / masquer les lignes en cliquant sur Row ou sur une ancre.
Une fonction devra être écrite pour identifier les lignes que vous souhaitez masquer, mais la bascule crée la fonctionnalité que vous recherchez.
la source