Javascript选择Lasso风格的表格中的单元格

时间:2013-04-08 19:55:59

标签: javascript jquery

我是Javascript的新手,我在创建一个Lasso风格的表格选择工具时遇到了麻烦。

基本上,我希望能够将鼠标拖到桌子上并让该区域中的所有单元格都突出显示,以便稍后我可以使用所选单元格执行某些操作。

这是我想要实现的一个非常错误的小提琴。 http://jsfiddle.net/kooldave98/ad5Z9/

var element = $("#rectangle");
// on mousedown
$(window).mousedown(function (e1) {
    // first move element on mouse location
    element.show().css({ top: e1.pageY, left: e1.pageX });
    // resize that div so it will be resizing while moouse is still pressed
    var resize = function (e2) {
        // you should check for direction in here and moves with top or left
        element.width(e2.pageX - e1.pageX);
        element.height(e2.pageY - e1.pageY);
    };
    $(window).mousemove(resize);
    // and finally unbind those functions when mouse click is released
    var unbind = function () {
        $(window).unbind(resize);
        $(window).unbind(unbind);
    };
    $(window).mouseup(unbind);
});

我需要能够在表格内的任何方向移动选择工具,然后使用“ctrl”键选择其他单元格。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用jQuery UI Selectable小部件执行此操作。

答案 1 :(得分:1)

具体来说,一旦你包含了jQuery UI Selectable小部件,你就可以做到

$('table').selectable(
    filter: 'td',      // Ensure elements are selected by table cell
);

然后在您的CSS中,您可以将类.ui-selecting.ui-selected设置为所需的高亮颜色。 E.g。

.ui-selecting {
    background: red;
}
.ui-selected {
    background: blue;
}

您还可能有一些您可能不需要的默认选择行为。以下是我摆脱它们的方法:

$(document).ready(function() {
    $('table').mousedown(function(event) {
        return false;
    });
});

虽然希望你有更具体的选择,而不仅仅是table。 :)