Annuler le déplacement d'un élément sortable

absolument commun sortable cas:

<script>
$(function() {
  $("#sortable").sortable();
});
</script>

<ul id="sortable">
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

problème. besoin d'annuler le dragage d'un article à une certaine condition et il y a un bon conseil de Andrew Whitaker , mais cette approche ne fonctionne que pour jquery-ui-draggable et échoue pour les sortables:

$("#sortable").sortable({
  start: function() {
    return false; // will still cause `this.helper is null`
  }
});

sera très utile pour des suggestions.

21
demandé sur Community 2011-02-27 15:48:12

4 réponses

la fonction sort callback fait la même chose pour le tri que la traînée pour draggable ( demo ):

$("#sortable").sortable({
    sort: function() {
        if ($(this).hasClass("cancel")) {
            $(this).sortable("cancel");
        }
    }
});
14
répondu Mottie 2015-09-22 20:57:10

Sortable a une capacité" cancel "invoquée en utilisant sortable('cancel') .

à Partir de la documentation: "Annule un changement dans le courant sortable et revient à l'état, avant le moment où le tri actuel a été commencé."Voir http://api.jqueryui.com/sortable/#method-cancel .

exemple d'usage:

$("#sortable").sortable({
  stop: function(e, ui) {
    if ("I need to cancel this") {
      $(ui.sender).sortable('cancel');
    }
  }
});
28
répondu root 2013-07-22 23:48:57

Returning false as fudgey suggère des travaux grands pour rendre les choses dynamiquement Invendable, mais il y a aussi un cancel option dans la config sortable qui vous permet de mettre en place static unsortables ainsi:

$("#sortable").sortable({
    // this prevents all buttons, form fields, and elemens
    // with the "unsortable" class from being dragged
    cancel: ":input, button, .unsortable"
});
20
répondu Ben Blank 2017-05-23 12:34:21

Essayer cet exemple

$('#list1').sortable({
    connectWith: 'ul'
});    

$('#list2').sortable({
    connectWith: 'ul',
    receive: function(ev, ui) {
       if(ui.item.hasClass("number"))
          ui.sender.sortable("cancel");
    }
});  
7
répondu Mj Azani 2013-10-23 18:12:57