2010-10-22 16 views
10

J'ai une liste triable qui utilise connectWith pour m'assurer qu'elle ne peut être triée que dans ses propres types de liste.Rendre une jquery jQuery accepte les éléments d'un fichier triable qui utilise connectWith

Maintenant j'essaye de faire un élément de poubelle de dépôt qui apparaît en bas sur la fenêtre quand un article est trié. Cet élément est en dehors du contexte des listes et supprime simplement tout élément qui y est déposé. La fonctionnalité souhaitée est identique à la suppression d'un raccourci à partir du bureau d'un téléphone Android, si vous êtes familier avec cela. Le problème est que, bien que ma poubelle soit une droppable qui accepte '*', mon sortable est seulement indiqué à connectWith d'autres éléments '.dropZone', ce qui signifie que je ne peux pas obtenir l'un de mes éléments triables pour provoquer un survol. état sur l'élément poubelle.

J'ai essayé de faire de chaque triable un objet déplaçable sur l'événement start, mais bien sûr, je ne fais pas glisser ce draggable au moment exact et donc il n'est pas activé. Est-il possible de satisfaire les deux exigences ou vais-je devoir détecter la poubelle peut planer manuellement?

+0

double possible de [jQuery Sortable et largable] (http://stackoverflow.com/questions/2090121/jquery-sortable-and-droppable) –

Répondre

1

Que diriez-vous de faire de la poubelle aussi un .dropZone? Ensuite, vous obtiendrez un événement drop approprié, et vous pouvez gérer la suppression correctement.

Il peut y avoir des effets secondaires de rendre la poubelle triable, mais je suppose qu'ils devraient être faciles à contourner. Si cela ne répond pas à vos exigences, pourriez-vous lancer une démonstration somewhere, afin que nous sachions exactement ce que nous aurions à faire pour garder votre structure intacte, tout en ajoutant les fonctionnalités dont vous avez besoin?

+0

Comment serait-il devenu un triables (sauf si le système n'a pas été développé avec la possibilité d'une différenciation entre "droppable" (une autre chose jquery-ui) et "sortable", me semble la réponse est de faire une classe droppable, une classe triable et une classe dragable –

+0

Je fonctionnais sous l'hypothèse, comme OP décrit, qu'il y a des limites sur l'option connectWidth.Faire de la poubelle un triable aurait été une simple solution de contournement. Puisque la solution de PetersenDidIt fonctionne clairement, il n'y a pas besoin d'abus de concepts sales et sournois. ;) – Thomas

17

Depuis connectWith accepte un sélecteur, vous pouvez lui fournir un sélecteur qui sélectionne les deux listes connectées et votre poubelle.

$("#sortable1, #sortable2").sortable({ 
    connectWith: '.connectedSortable, #trash' 
}).disableSelection(); 

$("#trash").droppable({ 
    accept: ".connectedSortable li", 
    hoverClass: "ui-state-hover", 
    drop: function(ev, ui) { 
     ui.draggable.remove(); 
    } 
}); 

Exemple: http://jsfiddle.net/petersendidit/YDZJs/1/

+2

Je tirais mes cheveux en utilisant draggable, droppable et en essayant de les combiner avec triable pour commander plusieurs listes et glisser/déposer entre eux. Vous venez d'utiliser triable pour eux tous et non draggable et droppable et cela fonctionne. Merci! –

+0

merci @ JohanWikström, je faisais la même chose pour une raison quelconque. le changer pour juste utiliser sortable trié (hum) moi out :) – CommentLuv

+1

L'option 'connectWith' de sortable ne connecte que des sortables. Il ne se connecte pas aux gouttes. L'article [revient simplement à triable] (http://jsfiddle.net/YDZJs/303/). Votre démo [fait la même chose] (http://jsfiddle.net/YDZJs/302/) sans l'option 'connectWith'. –