JQuery使用最近(“element.class”)

时间:2010-06-17 18:41:30

标签: jquery jquery-selectors

我正在尝试找到与特定类名匹配的最接近的tr。选择器不返回任何匹配项。我不理解的是什么?

例如:

<table>
<tbody class="category" id="cat-1">
<tr class="category-head">
  <th>Category 1</th>
</tr>
  <tr class="category-item">
    <th>Item 1</th>
  </tr>
  <tr>
    <td>This is a description of category item 1</td>
  </tr>
  <tr>
    <td><input type="text" name="c1_i1_input" id="c1_i1_input" class="category-item-input" /></td>
  </tr>
   <tr class="category-item">
    <th>Item 2</th>
  </tr>
  <tr>
    <td>This is a description of category item 2</td>
  </tr>
  <tr>
    <td><input type="text" name="c1_i2_input" id="c1_i2_input" class="category-item-input" /></td>
  </tr>
  </tbody>
</table>

<script type="text/javascript">
    $(document).ready(function () {
        $(".category-item-input").change(function () {
           //this works, returning the closest tr
            alert($(this).closest("tr").html());

            //this returns null?
            alert($(this).closest("tr.category-item").html());
        });

    });</script>

1 个答案:

答案 0 :(得分:8)

Closest找到最接近的祖先元素,而不是DOM中最近的元素。在您的情况下,包含输入的tr没有类,因此选择器失败。您可能希望找到最接近的tr,然后在该类中找到该tr的前一个兄弟。

$(this).closest('tr').prevAll('tr.category-item:last');