【问题标题】:How to access controls of a specific row in a table using javascript?如何使用javascript访问表中特定行的控件?
【发布时间】:2014-04-16 06:51:00
【问题描述】:

我有一个表,我在客户端单击按钮时动态地向其追加行。请看一看。。

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();
         }

【问题讨论】:

  • 在哪种情况下您要访问控件。还要在 SO 上发布您的相关代码。 JSFiddle 不是替代品
  • 我想在单击按钮时访问控件。我想访问刚刚单击其按钮的特定行及其行号。
  • @Satpal 每行都有一个提交按钮。
  • 可能jsfiddle.net/XD8rG 帮助你,例如我刚刚提醒输入值你可以继续工作

标签: javascript jquery asp.net dom


【解决方案1】:

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

$(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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 2011-12-05
  • 2016-06-28
  • 2021-12-15
  • 1970-01-01
相关资源
最近更新 更多