Вы можете использовать набор пользовательских обработчиков событий для управления поведением выделения и отмены выбора.С этим набором обработчиков ничего не отменяется, если только он не выбран, и вы щелкаете по нему снова, не делая выбора диапазона.Если вы удалите if (event.detail == 0) {
и связанные с ним операторы, то выбор диапазона будет действовать как инвертирование диапазона - все, что в выбранном диапазоне будет отменено, и наоборот.
var _selectRange = false, _deselectQueue = [];
$(function() {
$( "#selectable" ).selectable({
selecting: function (event, ui) {
if (event.detail == 0) {
_selectRange = true;
return true;
}
if ($(ui.selecting).hasClass('ui-selected')) {
_deselectQueue.push(ui.selecting);
}
},
unselecting: function (event, ui) {
$(ui.unselecting).addClass('ui-selected');
},
stop: function () {
if (!_selectRange) {
$.each(_deselectQueue, function (ix, de) {
$(de)
.removeClass('ui-selecting')
.removeClass('ui-selected');
});
}
_selectRange = false;
_deselectQueue = [];
}
});
});
Покаэто длится, вот пример jsfiddle .