我有一系列嵌套表(假设我无法改变结构),我需要选择最外面的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()
不太正确,因为可能比我的示例中显示的嵌套更多。那是表&gt;表&gt; table.relevanttable(这个不重要,只有最接近)&gt; table.relevanttable&gt;表&gt;表&gt; ...&gt; TD
此外,为了提供一些上下文,数据将基于用户交互写入表中。由于它是用户交互,因此无法事先知道什么是重要的。 table.relevanttable中可能有table.relevanttable,但只应使用最接近的table.relevanttable。可以想象将数据粘贴到Excel中,除了一些excel单元格包含整个工作表。它的Excel符合Inception。
答案 0 :(得分:1)
你实际上可以做一些与你的例子非常相似的事情。您只需考虑浏览器将添加tbody
是否添加一个。
$('#targetinput').closest('.relevanttable > tbody > tr > td');
我无法找到一个可靠的来源,提到哪些浏览器会添加tbody
。我希望所有现代浏览器都可以。我测试了IE9和当前的FF。
答案 1 :(得分:0)