好的,所以这个人应该在目标标签中调用rel属性的数字,但是它返回为undefined:
$(this).closest('tr').prevAll('tr:has(td.country)').first().attr('rel')
奇怪的是,这会调用该标签中的文字:
$(this).closest('tr').prevAll('tr:has(td.country)').first().text()
...但是当我使用attr('rel')它是未定义的?怎么会这样?它正确调用text()的示例标记是:
<td colspan="6" class="country" rel="3">United States</td>
答案 0 :(得分:1)
$(this).closest('tr').prevAll('tr:has(td.country)').first()
使用此代码,您无法访问<td>
,而是访问<tr>
,因此您无法访问rel
的{{1}}属性。
让我们把它分开:
$(this).closest('tr')
无论$(this)
是什么,您都找到了最近的父<tr>
$(this).closest('tr').prevAll('tr:has(td.country)')
您所有以前的兄弟姐妹都拥有<tr>
的{{1}}班级<td>
。
country
您选择上一个$(this).closest('tr').prevAll('tr:has(td.country)').first()
s
<tr>
要获得<tr>
,您需要执行以下操作:
<td>
编辑:正如@KevinB在下面指出的那样,$(this).closest('tr').prevAll('tr:has(td.country)').first().find('td')
让你认为它有效的唯一原因是因为text()
返回元素及其所有子元素的文本。因此,您仍然可以返回text()
,但由于该元素本身没有任何文本,因此您只能看到其子<tr>
的文本。
要证明您选择了<td>
而不是<tr>
,请执行以下操作:
<td>
这将输出“TR”而不是“TD”。