Jquery可选择无需控制

时间:2011-02-15 04:10:10

标签: javascript jquery jquery-ui jquery-plugins

我使用Jquery Selectable 但是用户必须按下控制按钮才能选择项目,无论如何用户可以选择多个项目而无需按住控制按钮?

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

4 个答案:

答案 0 :(得分:5)

您可以在用户点击元素时添加“已选择”类,只需在再次点击时删除该类。

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

答案 1 :(得分:4)

您可以使用一组自定义事件处理程序来控制选择和取消选择的行为方式。使用这组处理程序,除非选择它并再次单击它而不进行范围选择,否则不会取消选择任何处理程序。如果删除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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

最简单的方法是实现一个jQuery单击处理程序,它可以在可选元素上切换selected类。然后恰当地设置selected样式。在你的案例中,jQuery Selectable比帮助更具障碍。