2

这是我试图从中学习的问题

jQuery选择器抓取同一列中的单元格

在提出任何使用 index 和 nth-child 的答案之前,我一直在思考 $(this) 单元格之前的单元格数 - 例如

var columnNo = parentRow.nextUntil($(this),"td").length;
console.log(columnNo); // gives 0 - what am I missing?
parentTable.find("tr td:nth-child(" + (columnNo+1) + ")")

http://jsfiddle.net/mplungjan/JUt4F/

问题:

  1. 为什么 nextUntil 不给出前面单元格的长度?

2. 为什么点击只能成功一次?

请注意,我知道(在问这个之前)我可以使用 index.html 。我只是想修复我的脚本以探索 nextUntil

更新:我似乎混合了 nextAll 和 nextUntil 并且可能想象了某种 nextAllUntil

4

1 回答 1

2

该方法将在父行中nextUntil()找到第一个标签。td使用该逻辑,您只需选择每行中的第一个单元格。每次点击都有效——您只是一遍又一遍地将同一列涂成红色。

您需要做的是搜索td父行上的所有标签,并使用 jQuery 的index()方法来识别该行中单击的单元格的位置。

一个非常小的调整将解决这个问题:

$("td").on("click",function(){
    var parentTable = $(this).closest("table");
    var parentRow = $(this).parent();
    console.log(parentRow);
    var columnNo = parentRow.find('td').index($(this));
    console.log(columnNo);
    parentTable.find("tr td:nth-child(" + (columnNo+1) + ")")
        .css("color", "red");
});​

工作示例:http: //jsfiddle.net/JUt4F/15/

于 2012-12-28T06:46:55.207 回答