如何使用javascript访问表中特定行的控件?

时间:2014-04-16 06:51:00

标签: javascript jquery asp.net dom

我有一个表格,我在客户端点击按钮时动态追加行。请看看..

DEMO

正如您所看到的,每行都有一个按钮。我想访问其按钮被单击的行的控件。如何在按钮单击时获取相应的行号并使用该行号访问该行中的其他控件?

标记:

<table id="field">
    <tbody>
    <tr id="row1" class="row">
        <td> <span class='num'>1</span></td>
        <td><input type="text" /></td>
        <td><select class="myDropDownLisTId"> <input type="text" class="datepicker" /></select></td><td>
            <input type="submit"></input>
        </td>
    </tr>
    </tbody>
</table>
<button type="button" id="addField">Add Field</button>
<button type="button" id="deleteField">Delete Field</button>

的Javascript

    $(document).ready(function () {
             filldd();
             CreateDP();
            var rowstring = "<tr class='row'><td class='number'></td><td><input type='text'/></td><td><select class='myDropDownLisTId'/><input type='text' class='datepicker'/></td><td><input type='submit'></input></td></tr>";
             $("#addField").click(function (event) {
             $("#field tbody").append(rowstring);
             filldd();
             CreateDP();

             if ($("td").hasClass("number")) {
                 var i = parseInt($(".num:last").text()) + 1;
                 $('.row').last().attr("id", "row"+i);
                 $($("<span class='num'> " + i + " </span>")).appendTo($(".number")).closest("td").removeClass('number');
             }
             event.preventDefault();
         });

         $("#deleteField").click(function (event) {
             var lengthRow = $("#field tbody tr").length;
             if (lengthRow > 1)
                 $("#field tbody tr:last").remove();
             event.preventDefault();
         });

});

 function filldd(){
    var data = [
    { id: '0', name: 'test 0' },
    { id: '1', name: 'test 1' },
    { id: '2', name: 'test 2' },
    { id: '3', name: 'test 3' },
    { id: '4', name: 'test 4' },
];

    for (i = 0; i < data.length; i++) {
         $(".myDropDownLisTId").last().append(
            $('<option />', {
                'value': data[i].id,
                'name': data[i].name,
                'text': data[i].name
            })
         );
     }
         }

         function CreateDP(){
             $(".datepicker").last().datepicker();
         }

1 个答案:

答案 0 :(得分:0)

我相信你想在提交点击时访问它们。要获得最接近的点击元素的索引(基于行号0索引)tr:

$(this).closest('td').parent()[0].sectionRowIndex;

$(this).closest('tr')[0].sectionRowIndex

要访问同一tr中的元素,您可以使用:

$(this).closest('tr').find('selector here'); //example:$(this).closest('tr').find('.myDropDownLisTId').val()

<强> Working Demo