2014-02-17 2 views
0

У меня есть одна-много строк таблицы, содержащих входные данные формы, которые я хочу иметь под ними. Я добавляю таблицу фиктивных таблиц, которую я тогда хочу найти и использовать для итогов. Я думал, что могу просто сделать что-то вроде $(this).closest("tr").find(".class").attr("id");", но я всегда получаю неопределенное.получить идентификатор следующего tr на основе класса в jQuery

Для примера:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script language="javascript"> 
$(document).ready(function(){ 
    $(".totals").change(function() {       
     var tid = $(this).closest("tr").find(".totalsrow").attr("id"); 
     alert("id is " + tid); 
    }); 
}); 
</script> 
</head> 
<body>    

     <table cellspacing="0" cellpadding="0" align="center" width="100%"> 
      <tr> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong>      
      </tr>                 
      <tr> 
       <td>val</td> 
       <td>val</td> 
       <td><input type="text" id="1" name="1" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="2" name="2" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="3" name="3" value="" class="totals" size="5" maxlength="15" /></td> 
      </tr> 
      <tr> 
       <td>val</td> 
       <td>val</td> 
       <td><input type="text" id="4" name="4" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="5" name="5" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="6" name="6" value="" class="totals" size="5" maxlength="15" /></td> 
      </tr> 
      <tr id="totals1" class="totalsrow"></tr>         
      <tr> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong></td> 
       <td><strong>header</strong>      
      </tr>                 
      <tr> 
       <td>val</td> 
       <td>val</td> 
       <td><input type="text" id="1" name="1" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="2" name="2" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="3" name="3" value="" class="totals" size="5" maxlength="15" /></td> 
      </tr> 
      <tr> 
       <td>val</td> 
       <td>val</td> 
       <td><input type="text" id="4" name="4" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="5" name="5" value="" class="totals" size="5" maxlength="15" /></td> 
       <td><input type="text" id="6" name="6" value="" class="totals" size="5" maxlength="15" /></td> 
      </tr> 
      <tr id="totals2" class="totalsrow"></tr> 
     </table>         
</body> 
</html> 

В зависимости от того, какой вход я ввода информации, я бы ожидать, чтобы либо получить обратно totals1 или totals2. Что я делаю не так?

ТИА

ответ

3

.closest() ищет в дереве предка для согласующего элемента здесь вы ищете для следующего родственного элемента.

Попробуйте

$(document).ready(function(){ 
    $(".totals").change(function() {       
     var tid = $(this).closest("tr").nextUntil(".totalsrow").last().next().attr("id"); 
     alert("id is " + tid); 
    }); 
}); 

Демо: Fiddle

+0

Это сделало трюк - Спасибо! – Analog

0

Это также работает с помощью nextAll().

$(document).ready(function(){ 
    $(".totals").change(function() {       
     var tid = $(this).closest("tr").nextAll(".totalsrow").attr("id"); 
     alert("id is " + tid); 
    }); 
}); 
Смежные вопросы