JQuery UI SELECTABLE, как выбрать только один элемент? - PullRequest
12 голосов
/ 02 мая 2011

есть ли способ определить, что только один элемент может быть выбран с помощью виджета jquery.selectable?

Или я должен внедрить обходной путь захвата событий и манипулирования собой, что происходит?

Ответы [ 3 ]

20 голосов
/ 05 декабря 2012

Я расширил ответ Нирмала, чтобы ограничить выбор мышью. Кроме того, я чувствую, что лучше использовать параметр selected, а не отдельный обработчик событий.

$("#selectable").selectable({
    selected: function(event, ui) { 
        $(ui.selected).addClass("ui-selected").siblings().removeClass("ui-selected");           
    }                   
});

Осталась одна небольшая проблема. При выборе нескольких элементов мышью всегда будет выбран последний элемент. Это связано с тем, что функция, переданная параметру selected, запускается для каждого выбранного элемента, который, как я предполагаю, идет в порядке элементов. В идеале должен быть выбран элемент, на который попадает курсор мыши. Я не исправил это, потому что я в основном просто хотел ограничения множественного выбора при использовании мыши.

10 голосов
/ 02 мая 2011
$("#myList li").click(function() {
  $(this).addClass("selected").siblings().removeClass("selected");
});
7 голосов
/ 11 октября 2013

Я немного улучшаю ответ Мэттбланга.У братьев и сестер также могут быть потомки, поэтому более общий ответ:

$("#selectable").selectable({
    selected: function(event, ui) {
        $(ui.selected).addClass("ui-selected").siblings().removeClass("ui-selected").each(
            function(key,value){
                $(value).find('*').removeClass("ui-selected");
            }
        );
    }
});
...