私は JQuery UI - Selectableを使用しています。要素が押されて既に選択されている場合、その要素の選択を解除したい (トグル)
この機能を追加するのを手伝ってください!
私は JQuery UI - Selectableを使用しています。要素が押されて既に選択されている場合、その要素の選択を解除したい (トグル)
この機能を追加するのを手伝ってください!
すべてのクラスコールバックがあるため、これよりもはるかにうまくいくことはありません。
$(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');
}
});
});
Ctrl キーを押しながらクリックすると、jQuery UI を選択できる機能が既にあります。
デフォルトの機能として本当に必要な場合は、selectable を使用する必要はありません。nolabel が提案したように、単純な onclick ハンドラーとして実行できます。
または... jquery.ui.selectable.jsを編集して、必要なことだけを行うオプションを追加することもできます。難しいことではありません。event.metaKeyがチェックされる場所が 4 つあります。オプションが設定されているかどうかを確認し、event.metaKey が常に true であるかのようにコードパスを実行してください。
選択可能要素はさらにカスタマイズできるため、jQuery UI 開発者に次の公式バージョンに含めるよう機能要求を出すこともできます。
目的を達成するには、コードに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*/