JQueryUI множественный выбор по умолчанию и лассо переключать выбранный статус - PullRequest
1 голос
/ 07 февраля 2011

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

Этот вопрос посвящен поведению множественного выбора по умолчанию, но говорит только о том, что «я сделал это самостоятельно», не предоставляя ничего. Глядя на внутренние компоненты selectable, я вижу, что если я поиграю с условием! внутренние органы.

Аналогично, эта страница относится к желаемому эффекту переключения лассо, но я не уверен, где в коде была изменена функциональность лассо и как остальная часть сценария (сортируемая функциональность) сообщается, что он не работает в chrome или IE8 ( ссылка ) и устарел, поскольку на данный момент я бы не стал полностью полагаться на это.

Так что, если бы кто-нибудь мог помочь мне с любым из них, я был бы признателен. Спасибо

[Редактировать] Форматирование ...

1 Ответ

2 голосов
/ 07 февраля 2011

Я уверен, что есть лучший способ сделать это, но вот что я сделал в выбираемом файле js.

Для всегда множественного выбора:

Я добавил опцию 'AlwaysMulti' (по умолчанию false). Затем я заменил три экземпляра !event.metaKey на (!event.metaKey && !options.alwaysMulti) и два экземпляра event.metaKey на (event.metaKey || options.alwaysMulti).

Чтобы лассо выбора переключало выбранный статус, я нашел необходимые изменения на второй странице, на которую я ссылался. Я также добавил опцию 'lassoToggle' (по умолчанию false), чтобы активировать эту функцию. В _mouseDrag есть условие if (hit), оно изменяется на следующее:

    if (hit) {
                // SELECT
                selectee.deselect = false;
                if (selectee.selected || (options.lassoToggle && (selectee.startselected && event.metaKey)) {
                    selectee.$element.removeClass('ui-selected');
                    selectee.selected = false;
                    selectee.deselect = true;
                }
                if (selectee.unselecting) {
                    selectee.$element.removeClass('ui-unselecting');
                    selectee.unselecting = false;
                }
                if (!selectee.selecting && (!options.lassoToggle || !selectee.deselect) {
                    selectee.$element.addClass('ui-selecting');
                    selectee.selecting = true;
                    // selectable SELECTING callback
                    self._trigger("selecting", event, {
                        selecting: selectee.element
                    });
                }
                if(selectee.deselect && options.lassoToggle) {
                    selectee.$element.removeClass('ui-selecting');
                    selectee.selecting = false;
                    selectee.$element.addClass('ui-unselecting');
                    selectee.unselecting = true;
                    // selectable UNSELECTING callback
                    self._trigger("unselecting", event, {
                        unselecting: selectee.element
                    });
                }
            }

Примечание. Изменение event.metaKey для множественного выбора отсутствует в этом примере кода.

Надеюсь, это поможет кому-то еще!

...