【问题标题】:Jquery Selectable without holding controlJquery Selectable 无需控制
【发布时间】:2011-02-15 04:10:09
【问题描述】:

我使用Jquery Selectable 但是用户必须按住控制按钮才能选择项目是否有用户可以在不按住控制按钮的情况下选择多个项目?

换句话说:我希望用户能够通过单击来选择任何项目并通过再次单击来取消选择它。

【问题讨论】:

  • 套索(拖动框)或鼠标单击将选择单个/相邻的多个元素 - 仅在非连续选择时需要控制。

标签: javascript jquery jquery-ui jquery-plugins


【解决方案1】:

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

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.

【讨论】:

  • 这个解决方案最适合我。支持多个切换、套索选择并以编程方式与框架插件集成。 metaKey=true 的 CTRL 解决方案不适用于 JQuery UI 1.11.4。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我想我不得不改写我的问题,现在看看:)
    • 您如何在移动设备上做到这一点?
    【解决方案4】:

    最简单的方法是实现一个 jQuery 点击处理程序,它在您的可选元素上切换 selected 类。然后适当地设置selected 的样式。在你的情况下,jQuery Selectable 比帮助更麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多