Причина этого заключается в том, что опция cancel
обрабатывается виджетом ui.mouse
(виджетом, который используется несколькими виджетами jQueryUI для обработки событий мыши).Проверьте эту строку кода :
elIsCancel = (typeof this.options.cancel == "string"
&& event.target.nodeName ?
$(event.target).closest(this.options.cancel).length : false);
Это означает, что ваш селектор запускается с closest
на элементе, который был mousedown
включен.Итак, давайте возьмем li.cansort
сортируемый элемент.Это создаст селектор jQuery, который будет выглядеть примерно так:
$("li.cansort").closest(":not(.cansort)").length;
Это всегда вернет длину 1
, потому что родительский ul
для всех сортируемых li
s не имеет класса .cansort
.Это означает, что с этим типом селектора сортировка будет всегда отменяться.
К счастью, это легко обойти, если вы просто включите имя тега в селектор cancel
:
cancel: "li:not(.cansort)"
Вот пример: http://jsfiddle.net/7hSnc/ (попробуйте удалить li
из селектора cancel
)