9
votes

JQuery Drag et déposer dans des listes imbriquées - Comment minimiser / supprimer le scintillement

Basé sur http://jqueryui.com/demos/sortable/#placeholder i Je travaille sur une interface de glisser-déposer permettant à l'utilisateur de réorganiser les listes imbriquées. Comme vous pouvez le voir de Le lien Cela fonctionne bien sur des listes simples.

Cependant, lorsque je l'essaie de listes imbriquées, je suis assez mauvais scintillant. Essayez-le pour vous-même à:

http://jsfiddle.net/unklefolk/g5xpe/

Après avoir déplacé des objets intérieurs sur la liste extérieure et visa-versa, vous verrez qu'il existe un peu de problème de scintillement / de cyclisme, en particulier autour du point où une liste extérieure se réunit et une liste intérieure.

que puis-je faire pour minimiser ce scintillement? Y a-t-il une modification de la jQuery ou du CSS que je peux faire qui réduirait ce problème?


0 commentaires

4 Réponses :


0
votes

J'ai eu un problème similaire une fois auparavant, je n'ai pas le temps de l'adapter mais voici ma solution.

Utilisez un raccord JS: P>

$(document).ready(function() {
    var s = $("#sortable");
    s.sortable({
        tolerance: 'pointer',
        stop: function(event, ui) {
            var ranks = ['gold','silver','bronze'];
            $("li",s).each(function (idx) {
                for(var i = 0; i < ranks.length; ++i) $(this).removeClass(ranks[i]);
                $(this).addClass(ranks[idx]);
            });
        }
    });
});


3 commentaires

Merci pour la pointe, Kyle. Malheureusement, j'ai pris votre violon, je l'ai étendu à des listes imbriquées et j'ai toujours le scintillement pendant que je me déplace entre les niveaux. jsfiddle.net/unklefolk/uuefc Je ne sais pas si je manque quelque chose?


Le violon que vous avez fourni n'a pas une liste imbriquée :)


Excuses. Essayez ceci: Jsfiddle.net/unklefolk/uuefc/3 J'ai bien peur que j'ai Perdu les belles barres de chocolat, mais je pense que c'est en substance la même chose.



6
votes

Jetez un coup d'oeil à ce plugin triés imbriqué. Il s'agit d'un élément de liste piloté, mais il peut s'agir de la réponse à votre problème.

plug-in jquy de jackery


1 commentaires

Grand lien Brian. Ce plugin semble beaucoup plus que ce dont j'ai besoin. J'aimerais avoir trouvé cela il y a plusieurs mois. Je ne pourrais peut-être pas utiliser cette solution car je suis assez loin dans la route et le temps de JQuery Ui est limité, mais je vais attribuer cette réponse à la Bounty comme il semble que la meilleure solution pour les autres utilisateurs qui rencontrent ce problème.



1
votes

Habituellement, j'utilise Helper: "Clone ' Code> Quel est un impact sur ce problème (jamais compris pourquoi). Je ne sais pas si cela fonctionne, sur mon firefox 8 semble mieux

$(function() {
    $( ".sortable" ).sortable({
        placeholder: "ui-state-highlight",
        connectWith: ".sortable",
         helper: 'clone'
    });
    $( ".sortable" ).disableSelection();
});


1 commentaires

Merci pour la réponse, Nicola. Je n'ai pas semblé avoir beaucoup d'effet sur ma mise en œuvre, mais j'espère que cela aidera quelqu'un d'autre.



0
votes

op ici. Je voulais juste publier ce que j'ai enfin fait pour résoudre ce problème. Basé sur http://bugs.jquyui.com/ticket/4741?cversion=0&cnum_hist = 8 i décompressé la ligne suivante dans jquery-ui-1.8.6.js: xxx

I Utilisez toujours le Connectwith Attribut.

Je peux maintenant faire glisser et déposer entre les niveaux de la hiérarchie sans scintillement. J'espère que cela aide d'autres utilisateurs.


1 commentaires

Et si nous utilisons JQuery UI 1.12.1? @Marque