Empêcher la suppression de l'élément de liste dans JqueryUI triable
J'ai deux listes #sortable1
et #sortable 2
qui sont connectés sortables, comme le montre cette exemple.
Vous pouvez faire glisser et déposer les éléments de la liste de sortable1
à sortable 2
. Cependant, si un élément dans sortable 1 contient la classe "nombre", je veux empêcher la baisse sur Sortable2 et de rendre ainsi l'élément glissé retomber dans sortable 1.
J'ai utilisé de la façon suivante sur sortable2:
receive: function (event, ui) {
if ($(ui.item).hasClass("number")) {
$(ui.item).remove();
}
mais il supprime l'élément de la liste à partir de deux tables au total. Toute aide sera appréciée.
source d'informationauteur user1038814
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une combinaison de la
beforeStop
etsortable('cancel')
méthodes pour valider les élément déplacé. Dans cet exemplesur un élément qui est tombé, j'ai vérifier si l'élément est valide par:number
list2
Ce qui est légèrement plus codé en dur que je voudrais, donc, sinon ce que vous pourriez faire est de vérifier le parent de l'élément déposé contre
this
pour vérifier si les listes sont différentes. Cela signifie que vous pourriez éventuellement avoir un élément denumber
danslist1
etlist2
mais ils ne sont pas interchangeables.jsFiddle Exemple
Pour tous ceux qui lisent ceci, dans l'avenir, comme mentionné par briansol dans les commentaires pour la accepté de répondre, il déclenche une erreur
La documentation en particulier dit
L'annulation de la sorte lors d'autres événements n'est pas fiable, il est Donc préférable d'utiliser le
recevoir
événement comme indiqué dans Mj Azani's réponse ou utiliser lestop
événement comme suit:Démo
Essayer cet exemple
Après quelques expériences, j'ai trouvé que, de loin, la méthode la plus simple est d'utiliser le retirer de l'événement, que l'essentiel se déclenche uniquement lorsque vous essayez de déplacer un élément dans un nouveau sortable (qui était auparavant disponible comme une cible à l'aide connectWith).
Simplement ajouter ceci à votre sortable appel:
Si vous n'avez pas besoin d'être en mesure de faire glisser les éléments avec la classe "numéro", vous pouvez aussi limiter l'ensemble du glisser-déposer pour les éléments qui n'ont pas la classe "nombre":
Vous pouvez l'essayer ici: http://jsfiddle.net/60gwjsgb/1/
de l'essayer.
Si a) vous n'avez juste ces 2 listes, et b) vous ne vous souciez pas de votre "numéro" en fait traîné, puis baisse du retour, vous pouvez tout simplement l'empêcher de se faire entraîner par ce: