J'utilise jQuery UI triable pour rendre ma grille de table triable. Le code semble fonctionner correctement, mais comme je n'ajoute pas de largeur à td
s, lorsque je fais glisser le, tr
il réduit le contenu.
Par exemple; si ma ligne de tableau est de 500 pixels lorsque je commence à faire glisser, elle devient 300 pixels. Je suppose que cela se produit car aucune largeur n'est définie dans la grille. C'est parce que j'utilise deux classes pour le td
s ( fix
et liquid
).
La fix
classe rend td
égal à la largeur du contenu et liquid
rend la td
largeur à 100%. C'est mon approche pour la table de grille sans avoir à attribuer une largeur à td
s.
Une idée comment rendre le travail triable avec mon approche?
Réponses:
J'ai trouvé la réponse ici .
Je l'ai légèrement modifié pour cloner la ligne, au lieu d'ajouter des largeurs à l'original:
la source
$(this).width($originals.eq(index).outerWidth());
Je pense que cela peut aider:
la source
La réponse choisie ici est une très bonne solution, mais elle a un bug grave qui est apparent dans le violon JS original ( http://jsfiddle.net/bgrins/tzYbU/ ): essayez de faire glisser la ligne la plus longue ( God Bless You, Mr . Rosewater ), et le reste de la largeur des cellules s'effondre.
Cela signifie que la fixation des largeurs de cellule sur la cellule déplacée n'est pas suffisante - vous devez également fixer les largeurs sur le tableau.
JS Fiddle: http://jsfiddle.net/rp4fV/3/
Cela résout le problème de la réduction du tableau après avoir fait glisser la première colonne, mais en introduit une nouvelle: si vous modifiez le contenu du tableau, les tailles de cellule sont maintenant fixées.
Pour contourner ce problème lors de l'ajout ou de la modification de contenu, vous devez effacer les largeurs définies:
Ajoutez ensuite votre contenu, puis corrigez à nouveau les largeurs.
Ce n'est toujours pas une solution complète, car (en particulier avec une table) vous avez besoin d'un espace réservé de dépôt. Pour cela, nous devons ajouter une fonction au démarrage qui construit l'espace réservé:
JS Fiddle: http://jsfiddle.net/rp4fV/4/
la source
$(".must-have-class").css("height", $(ui.item).outerHeight());
Il semble que le clonage de la ligne ne fonctionne pas bien sur IE8, mais la solution d'origine fonctionne.
Testé avec le jsFiddle .
la source
Appelez ce code suivant lorsque votre table est prête à être triée, cela garantira que vos éléments td ont une structure de table fixe avec sans rupture.
la source
th
aussi bientd
. Il corrige l'effondrement des lignes traînées et l'effondrement du tableau, mais au prix de la fixation des largeurs.jsFiddle
Après de nombreuses tentatives, j'ai juste essayé une solution simple qui complète la solution de Dave James Miller pour éviter que la table ne rétrécisse en faisant glisser la plus grande ligne. J'espère que cela aidera :)
la source
La solution de Keith est bonne mais a produit un peu de ravages dans Firefox qui n'a pas additionné les colspans mais les a signalés. (L'ancienne douleur de type string js dans le genou)
en remplaçant cette ligne:
avec:
Résout le problème. (Comme js est obligé de traiter les variables comme des nombres au lieu de chaînes)
la source
La réponse de Dave James Miller a fonctionné pour moi, mais en raison de la disposition des divs de conteneur sur ma page, l'assistant qui traîne avec le curseur de la souris est décalé de la position de ma souris. Pour résoudre ce problème, j'ai ajouté ce qui suit au rappel de l'aide
Voici le rappel complet avec la ligne ci-dessus ajoutée:
J'aurais ajouté ceci en commentaire à la réponse de Dave, mais je n'avais pas assez de représentants sur ce compte.
la source
Il semble que
disableSelection()
- la méthode est mauvaise et obsolète de nos jours. Je ne peux plus utiliser d'entrées de texte dans une ligne triable dansMozilla Firefox 35.0
. Ce n'est tout simplement plus focalisable.la source
la source
la source
Appliquez le triable à l'élément tbody de la table et définissez simplement l'assistant sur `` clone '', comme décrit dans l' API de jquery-ui
la source