从按钮上的表行获取值单击jquery

时间:2017-09-07 08:28:56

标签: jquery

我试图在按钮点击时从表中获取行值。这就是我创建表格的方式:

<tbody>
    @foreach (var item in Model)
    {
        ViewBag.AccountID = item.AccountId.ToString();
        if (item.Items != null)
        {
            foreach (var itemOnList in item.Items)
            {
                <tr>
                    <td>@Html.DisplayFor(model => itemOnList.ItemId)</td>
                    <td data-itemname="@itemOnList.ItemName">@Html.EditorFor(model => itemOnList.ItemName)</td>
                    <td data-serialnumber="@itemOnList.SerialNumber">@Html.EditorFor(model => itemOnList.SerialNumber)</td>
                    <td data-brandname="@itemOnList.BrandName">@Html.EditorFor(model => itemOnList.BrandName)</td>
                    <td data-quantity="@itemOnList.Quantity">@Html.EditorFor(model => itemOnList.Quantity)</td>
                    <td data-description="@itemOnList.Description">@Html.EditorFor(model => itemOnList.Description)</td>
                    <td>
                        <a href="javascript:void(0);"  data-itemid="@itemOnList.ItemId" class="btn_edit">Edit |</a>
                        <a href="javascript:void(0);" data-itemid="@itemOnList.ItemId" class="btn_delete">Delete</a>
                    </td>
                </tr>
            }
        }
    }
</tbody>

这是我尝试从表中获取值的方法:

$('#tbl_items').on('click', '.btn_edit', function () {
    var self = $(this);
    alert($(this).data('serialnumber') + " " + $(this).data('description'));
});

但它并没有提醒我价值观。

1 个答案:

答案 0 :(得分:3)

问题是因为data-serialnumberdata-description属性不在您点击的a元素上,它们位于同一行的td元素上。

要解决此问题,您可以使用closest()获取最近的tr,然后找到td并获取data属性值,如下所示:

$('#tbl_items').on('click', '.btn_edit', function () {
    var $tr = $(this).closest('tr');
    var serialNumber = $tr.find('td[data-serialnumber]').data('serialnumber');
    var description = $tr.find('td[data-description]').data('description');
    alert(serialNumber + " " + description);
});