JQuery найти следующий элемент с классом - PullRequest
5 голосов
/ 05 марта 2011

У меня довольно простой вопрос, который съел меня 4 часа и еще не решен: как найти следующий диапазон с конкретным классом с помощью jQuery? У меня есть следующий HTML

<tr>
    <td align="right">Име:&nbsp;</td>
    <td align="left">
         <input type="text" value="<?=$profileSQL['user_name']; ?>" name="user_name" class="input required" />
    </td>
</tr>
<tr>
    <td align="right" colspan="2">
         <span class="error"></span>
    </td>
</tr>

и я проверяю это с помощью jQuery. Я хочу, если есть сообщение об ошибке, сгенерированное с помощью js (просто строка), jQuery для поиска ближайшего диапазона с классом .error и text() сообщения там. Я пробовал с nextAll(), next("span.error") и многими другими вещами, но мне ничего не помогло.

Заранее спасибо!

Ответы [ 4 ]

2 голосов
/ 05 марта 2011

проблема в том, что .next () и .nextAll () осуществляют поиск только через братьев и сестер (элементы, имеющие одного и того же родителя).

Из документации jQuery:

Описание: Получить все следующие братья и сестры каждого элемента в наборе согласованные элементы, с возможностью фильтрации селектором.

В вашем случае у вас есть:

  <tr> 
     <td> title here</td> 
     <td><input name="user_name"/> </td>
   </tr>
   <tr>
     <td colspan="2">
       <span class="error"></span>
     </td> 
   </tr>

Как я понимаю, ваш код JQuery выполняется на входе, верно? В этом случае перед вызовом newxt () или nextAll () вы должны сначала подняться на 2 уровня, до тех пор, пока и затем не выберите следующий, потому что есть то, что вы хотите найти, поэтому:

вот рабочий пример, чтобы проверить это: http://jsfiddle.net/EM5Gw/

2 голосов
/ 05 марта 2011

Я знаю, что это может быть не совсем то, что вы ищете, но если вы получили ввод, как это:

var input = $('input[name="user_name"]');

Тогда вы можете просто сделать:

input.parents('tr').eq(0).next().find('.error').text(nameErrEmptyMsg);
0 голосов
/ 05 марта 2011

Вы можете использовать next('span.error'):

http://jsfiddle.net/wPZgg/

0 голосов
/ 05 марта 2011

попробуй

  console.log($("td>span").next().find(".error").text())
...