16

给定一个多行、多列表的表格,我如何选择与任意单元格相同的列中的所有单元格(例如,单击的单元格)。

就像是:

$("td").click(function(){
    var columnNo = $(this).columnNo?
    $(this).closest("table").find("tr td:eq("+columnNo+")").css("color", "red");
});

我需要这样做而不单独命名列。例如,它应该适用于table没有额外类或 ID 的简单通用标记。

4

2 回答 2

24

您的尝试是正确的,您需要做的就是使用.index查找列号——<td>行内的索引。您还需要使用nth-child-selector<td>来匹配其他元素的列索引。

$("td").click(function(){
    var columnNo = $(this).index();
    $(this).closest("table")
        .find("tr td:nth-child(" + (columnNo+1) + ")")
        .css("color", "red");
});
于 2012-12-27T20:58:01.450 回答
4

这可以使用 jQueryeq方法来完成。

var $tds = $("td"); // get all tds beforehand, so jquery doesn't 
                    // need to hit the DOM every click

$("td").on("click", function () {
    var position = $(this).index(),
        $tdsInColumn = $tds.filter(":nth-child(" + index + ")");

    // manipulate $tdsInColumn in any way
    $tdsInColumn.addClass("selected");
});

不确定这是否是最有效的方法,但这是我不久前遇到同样问题时提出的解决方案。

参考

jQuery.eq

于 2012-12-27T20:53:31.827 回答