Получить значения <td>только в определенных строках, используя jQuery - PullRequest
4 голосов
/ 10 июня 2011

У меня есть таблица (id = "docsTable"), строки которой выглядят примерно так:

<tr bgcolor="#E7DDCC">
    <td align="center"><input type="checkbox" name="docsToAddToClass[]" value="35" /></td>
    <td>Document Title</td>
    <td>Document Description.</td>
</tr>

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

Мне не нужно создавать коллекцию: в каждой итерации я хочу изменить некоторые элементы в другом месте. Это не самая сложная часть (для меня). Он пытается выяснить, как перебирать таблицу и выбирать только s с установленными флажками.

Ответы [ 3 ]

8 голосов
/ 10 июня 2011
<html>
  <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script>
    <script type="text/javascript">
        $(function(){
            $('#btnTest').click(function(){
                $('#docsTable input[type="checkbox"]:checked').each(function(){
                    var $row = $(this).parents('tr'); 
                    alert($row.find('td:eq(0) input').val());
                    alert($row.find('td:eq(1)').html());
                    alert($row.find('td:eq(2)').html());
                });
            });
        });
    </script>
  </head>
  <body>
    <table id="docsTable">
        <tr bgcolor="#E7DDCC">
            <td align="center"><input type="checkbox" name="docsToAddToClass[]" value="35" /></td>
            <td>Document Title 1</td>
            <td>Document Description.</td>
        </tr>
        <tr bgcolor="#E7DDCC">
            <td align="center"><input type="checkbox" name="docsToAddToClass[]" value="36" /></td>
            <td>Document Title 2</td>
            <td>Document Description.</td>
        </tr>
        <tr bgcolor="#E7DDCC">
            <td align="center"><input type="checkbox" name="docsToAddToClass[]" value="37" /></td>
            <td>Document Title 3</td>
            <td>Document Description.</td>
        </tr>
    </table>
    <input type='button' id='btnTest' value='Get Rows' />
  </body>
</html>   
2 голосов
/ 10 июня 2011
$('#docsTable > tr > td > input:checked').each(function(i,element){

var el = $(element);
alert( el.val() );
alert( el.parent().siblings(':eq(0)').html() );
alert( el.parent().siblings(':eq(1)').html() );

});
2 голосов
/ 10 июня 2011

Вы можете попробовать что-то вроде этого:

$('tr > td:first-child > input:checked').each(function() {  
    // $(this).val() is the value of the input
    // $(this).parent().siblings() will refer to the two <td>'s  
    // You can also try other traversal methods like $(this).parent().next()
});  

Надеюсь, это работает и помогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...