JQuery Using Closest ("element.class") - PullRequest
       3

JQuery Using Closest ("element.class")

3 голосов
/ 17 июня 2010

Я пытаюсь найти ближайший 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 Ответ

8 голосов
/ 17 июня 2010

Ближайший находит ближайший элемент-предок, а не ближайший в DOM.В вашем случае tr, содержащий входные данные, не имеет класса, поэтому селектор не работает.Вы, вероятно, хотите найти ближайший tr, а затем найти предшествующего предыдущего брата этого tr с классом.

$(this).closest('tr').prevAll('tr.category-item:last');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...