7

私は JQuery UI - Selectableを使用しています。要素が押されて既に選択されている場合、その要素の選択を解除したい (トグル)

この機能を追加するのを手伝ってください!

4

3 に答える 3

22

すべてのクラスコールバックがあるため、これよりもはるかにうまくいくことはありません。

$(function () {
        $("#selectable").selectable({
            selected: function (event, ui) {
                if ($(ui.selected).hasClass('click-selected')) {
                    $(ui.selected).removeClass('ui-selected click-selected');

                } else {
                    $(ui.selected).addClass('click-selected');

                }
            },
            unselected: function (event, ui) {
                $(ui.unselected).removeClass('click-selected');
            }
        });
    });
于 2011-04-19T16:52:04.917 に答える
1

Ctrl キーを押しながらクリックすると、jQuery UI を選択できる機能が既にあります。

デフォルトの機能として本当に必要な場合は、selectable を使用する必要はありません。nolabel が提案したように、単純な onclick ハンドラーとして実行できます。

または... jquery.ui.selectable.jsを編集して、必要なことだけを行うオプションを追加することもできます。難しいことではありません。event.metaKeyがチェックされる場所が 4 つあります。オプションが設定されているかどうかを確認し、event.metaKey が常に true であるかのようにコードパスを実行してください。

選択可能要素はさらにカスタマイズできるため、jQuery UI 開発者に次の公式バージョンに含めるよう機能要求を出すこともできます。

于 2011-04-19T15:44:24.637 に答える
0

目的を達成するには、コードに2つの単純な要素を挿入する必要があります。これは、反転/トグル機能が必要な場合はいつでも、metaKeyブール値を反転するだけです。

options: {
    appendTo: 'body',
    autoRefresh: true,
    distance: 0,
    filter: '*',
    tolerance: 'touch',
    inverted: false /* <= FIRST*/
},

_mouseStart: function(event) {
    var self = this;

    this.opos = [event.pageX, event.pageY];

    if (this.options.disabled)
        return;

    var options = this.options;

    if (options.inverted) /* <= SECOND*/
        event.metaKey = !event.metaKey; /* <= SECOND*/
于 2011-11-22T11:56:17.253 に答える