An absolutely common sortable case:
<script> $(function() { $("#sortable").sortable(); }); </script> <ul id="sortable"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul>
Problem. Need to cancel dragging of an item on some condition and there is a good advice of Andrew Whitaker, but that approach is working only for jquery-ui-draggable and fails for sortables:
$("#sortable").sortable({ start: function() { return false; // will still cause `this.helper is null` } });
Will be greateful for suggestions.
Sortable has a "cancel" capability invoked using sortable('cancel')
.
From the docs: "Cancels a change in the current sortable and reverts it to the state prior to when the current sort was started." See http://api.jqueryui.com/sortable/#method-cancel.
Example usage:
$("#sortable").sortable({ stop: function(e, ui) { if ("I need to cancel this") { $(ui.sender).sortable('cancel'); } } });
Returning false
as fudgey suggests works great for making things dynamically unsortable, but there's also a cancel
option in the sortable config which lets you set up static unsortables as well:
$("#sortable").sortable({ // this prevents all buttons, form fields, and elemens // with the "unsortable" class from being dragged cancel: ":input, button, .unsortable" });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With