如何使用jQuery UI选择表中只有一列?

The*_*ear 1 jquery jquery-ui selectable

我想要做的是允许用户使用jQuery UI select一次从一列中选择行.

我需要做的是限制跨越多列的拖动/突出显示效果.例如,用户开始拖动事件的哪一列,他们不能突出显示该列的一侧.

表格代码

<table id="selectable">
  <tr>
    <td data-col="0">
    <td data-col="1">
    <td data-col="2">
  </tr>
  <tr>
    <td data-col="0">
    <td data-col="1">
    <td data-col="2">
  </tr>
  <tr>
    <td data-col="0">
    <td data-col="1">
    <td data-col="2">
  </tr>
  ...etc
</table>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

var currentCol;

$("#selectable").selectable({
    filter:'td',
    selecting: function(event, ui){
        console.log($(ui.selected));
    }
});
Run Code Online (Sandbox Code Playgroud)

但我无法获得data-col它的价值,它总是如此null.

The*_*ear 5

感谢Daniel指出我正确的方向.

为了将拖动锁定在单个列的顶部,这就是我所做的.

    var currentCol;

    $("#selectable").selectable({
        filter: "td",
        start: function(event, ui) {
            $("td").removeClass("ui-selected");
        },
        stop: function(event, ui) {

            //Reset selector. 
            currentCol = undefined;
        },
        selecting: function(event, ui) {

            if (currentCol === undefined) {
                currentCol = $(ui.selecting).attr('data-col');
            }

            var nthChild = parseInt(currentCol) + 1; //Add one as nthChild is not zero index

            for (var i = 1; i <= 9; i++) {

                if (i != nthChild) {
                    $("td.ui-selecting:nth-child(" + i + ")").each(function() {
                        $(this).removeClass("ui-selecting");
                    });
                }
            }
            ;
        }
    });
Run Code Online (Sandbox Code Playgroud)