$(this).closest('tr').prevAll('tr:has(td.country)').first()
使用此代码,您访问的不是<td>
,而是<tr>
,因此您无法访问rel
它的属性。
让我们把它分开:
$(this).closest('tr')
不管$(this)
是什么,你都在寻找它最亲近的父母<tr>
$(this).closest('tr').prevAll('tr:has(td.country)')
您正在将所有以前的兄弟姐妹都带到<tr>
具有<td>
with 类的兄弟姐妹中country
。
$(this).closest('tr').prevAll('tr:has(td.country)').first()
您选择上一个s<tr>
列表中的第一个<tr>
要获得<td>
,您需要执行以下操作:
$(this).closest('tr').prevAll('tr:has(td.country)').first().find('td')
编辑:正如@KevinB 在下面指出的那样,text()
让您认为它有效的唯一原因是因为text()
返回元素及其所有子元素的文本。所以你仍然得到了<tr>
支持,但由于该元素本身没有任何文本,你只能看到它的 child 的文本<td>
。
为了证明您选择的是<tr>
而不是<td>
,请执行以下操作:
alert($(this).closest('tr').prevAll('tr:has(td.country)').first().prop('tagName'));
这将输出“TR”而不是“TD”。