javascript Jquery Selectable,无需holding控件

x7yiwoj4  于 2023-06-28  发布在  Java
关注(0)|答案(5)|浏览(87)

我使用的Jquery Selectable,但用户必须按住控制按钮来选择项目是有反正用户可以选择多个项目,而无需按住控制按钮?
换句话说:我希望用户能够通过点击它和取消选择它再次点击任何项目。

f4t66c6m

f4t66c6m1#

可以使用一组自定义事件处理程序来控制选择和取消选择的行为。对于这组处理程序,没有任何东西会被取消选择,除非它被选中,并且您再次单击它而不进行范围选择。如果删除if (event.detail == 0) {及其相关语句,则range select将像range invert一样工作--选中的范围内的任何内容都将被取消选中,反之亦然。

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 = [];
        }
    });
});

While it lasts, here's a jsfiddle example

m3eecexj

m3eecexj2#

您可以在用户单击元素时添加“selected”类,并在再次单击时删除该类。

$(".selectable").click(function(e) {
    $(this).toggleClass("selected");
});
gdrx4gfi

gdrx4gfi3#

也可以使用鼠标左键并向下拖动以选择多个项目。但只能通过此选项选择相邻的项目。

siotufzp

siotufzp4#

最简单的方法是实现一个jQuery click处理程序,它可以在可选元素上切换selected类。然后适当地设置selected的样式。jQuery Selectable在您的情况下是一个阻碍而不是帮助。

sycxhyv7

sycxhyv75#

你可以这样做:

$("#selectable").bind('mousedown', function (e) {
    e.metaKey = true; // for Mac OS
    e.ctrlKey = true; // for Windows
}).selectable();

相关问题