0

我有一系列嵌套表(假设我无法更改其结构),我需要选择最外层的 td。

测试 HTML

<table>
    <tr>
        <td>
            <table class="relevanttable">
                <tr>
                    <td>one</td>
                    <td>two</td>
                    <td>
                        the important td
                        <table>
                            <tr>
                                <td>three - one</td>
                                <td>three - two <input id="targetinput" /></td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

JS:

var relevant_field = $('#targetinput');
var target_table = relevant_field.closest('.relevanttable');
// I want something like this
var important_cell = last_selected.closest('.relevanttable > tr > td');

我想我可以用related_field.parentsUntil('.tableanswer', 'td') 来完成这项工作,然后找出哪个项目离它最远,但我想知道是否有更好的方法来解决这个问题并立即选择确切的td 我感兴趣。这是一个简单的例子,但可能有多个表相互嵌套,最外面的表可能不是我关心的表。

针对前几条评论/答案的更新:

$('#targetInput').parents('td').last()

不太正确,因为嵌套可能比我的示例中显示的要多。即 table > table > table.relevanttable (这个不重要,只最接近) > table.relevanttable > table > table >...> td

此外,为了提供一些上下文,数据将基于用户交互写入表。由于它是用户交互,因此无法提前知道什么是重要的。table.relevanttable 中可能有一个 table.relevanttable,但只能使用最接近的一个。可以将其想象为将数据粘贴到 Excel 中,只是某些 Excel 单元格包含整个工作表。这是 Excel 与 Inception 的结合。

4

2 回答 2

1

您实际上可以做一些与您的示例非常相似的事情。您只需要考虑浏览器tbody是否会添加一个。

$('#targetinput').closest('.relevanttable > tbody > tr > td');

http://jsfiddle.net/d7Zqf/1/

我找不到可靠的来源,其中提到了哪些浏览器会添加和不添加tbody. 我希望所有现代浏览器都能做到。我测试了IE9和当前的FF。

于 2013-05-23T20:34:02.750 回答
0

我个人建议,尽管尚未经过测试:

$('#relevant_field').parents('td').last();

参考:

于 2013-05-23T20:15:00.320 回答