1

我真的是 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”键选择其他单元格。

任何帮助将不胜感激。

4

2 回答 2

1

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

于 2013-04-08T20:21:43.667 回答
1

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

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

然后在你的 CSS 中,你有类.ui-selecting.ui-selected你可以设置你想要的高亮颜色。例如

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

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

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

尽管希望您有更具体的选择,而不仅仅是table. :)

于 2016-12-22T16:56:56.017 回答