2010-11-04 13 views
1

je suit ...glisser jquery et laisse tomber

<ul> 
    <li>Item</li> 
    <li>Item</li> 
    <li>Item</li> 
</ul> 
<ul> 
    <li>Item</li> 
    <li>Item</li> 
    <li>Item</li> 
</ul> 
<ul> 
    <li>Item</li> 
    <li>Item</li> 
    <li>Item</li> 
</ul> 

je dois faire glisser chaque élément d'un ul à l'autre, mais il faut éviter les duplications dans la même ul et il suffit d'ajouter l'article à la ul abandonnée. Utilisation de jQuery J'ai essayé beaucoup de choses mais il y a toujours quelque chose qui chamboule tout.

des idées? thnx

Répondre

1

vous pouvez utiliser le jQueryUI http://jqueryui.com/demos/sortable/

le rend très facile à dragdrop/Redimensionner/drop ...

+0

Sortables fonctionnent bien, mais le problème est à chaque fois que je laisse tomber quelque chose sont dupliquées articles – Val

0

Cela est compliqué parce que vous avez plusieurs Sortables et il est difficile de faire fonctionner. Je l'ai fait en utilisant le contrôleur triable avec l'option connectTo en spécifiant les autres cibles possibles.

+0

Je suis confortable en utilisant Sortables mais le seul problème est que je ne ai besoin d'une copie de cette article. donc si l'article existe déjà, je pourrais afficher une erreur ou ignorer le glisser – Val

+0

Je n'ai pas fait cela depuis un moment, donc ma mémoire est un peu floue, mais je pense que vous pouvez accrocher l'événement 'receive' ou 'drop' sur la cible, effectuez une validation et renvoyez false pour rejeter le fichier. – hybernaut

0

essayer d'enlever duplications ajouter avant

$("li").draggable({ 
appendTo: "ul", 
helper: "clone" 
}); 
$("ul").droppable({ 
activeClass: "ui-state-default", 
hoverClass: "ui-state-hover", 
accept: ":not(.ui-sortable-helper)", 
drop: function(event, ui) { 
    $(this).find("li:contains('" + ui.draggable.text() + "')").remove(); 

    $("<li></li>").text(ui.draggable.text()).appendTo(this); 
} 
})