$(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)')
with class<tr>
を持つ以前の兄弟をすべて取得しています。<td>
country
$(this).closest('tr').prevAll('tr:has(td.country)').first()
<tr>
前のリストの最初の<tr>
sを選択します
を取得するには、次の<td>
ようにする必要があります。
$(this).closest('tr').prevAll('tr:has(td.country)').first().find('td')
編集: @KevinB が以下で指摘しているように、text()
それが機能すると思わせる唯一の理由text()
は、要素とそのすべての子のテキストを返すためです。そのため、引き続き取得できます<tr>
が、その要素自体にはテキストがないため、その子のテキストのみが表示されます<td>
。
ではなくを選択していることを証明するには、次の<tr>
手順を実行します。<td>
alert($(this).closest('tr').prevAll('tr:has(td.country)').first().prop('tagName'));
これにより、「TD」ではなく「TR」が出力されます。