我有一个类别列表,可以从foreach获取记录。每行都有删除按钮,此按钮的data-id从行中获取id。我还有一个获取data-id的函数。但是有一个问题,我总是得到第一个记录ID。
Global.js:
function DeleteCategory() {
var Id = $("#Cid").attr("data-id");
alert(Id);
}
Index.cshtml:
<tbody>
@foreach (var item in Model)
{
<tr>
<td><span class="label label-success">@item.Id</span></td>
<td>@item.CategoryName</td>
<td>
@if (item.IsActive)
{
<b class="label label-success">Active</b>
}
else
{
<b class="label label-danger">Passive</b>
}
</td>
<td>Server updates and maintenance</td>
<td><a href="#">Admin</a></td>
<td>
<button class="btn btn-default btn-sm" id="editId" onclick="" data-id="">Edit</button>
@*@Html.ActionLink("Delete","Delete", new {id=item.Id },new { onclick = "return confirm('Do you want to delete this row?')"})*@
<button class="btn btn-default btn-sm" id="Cid" onclick="DeleteCategory()" data-id="@item.Id">Delete</button>
</td>
</tr>
}
答案 0 :(得分:0)
id
属性必须是唯一的
id
的第一个元素才会被视为真实元素。你可以改用类。
但在您的情况下,将itemId直接传递给DeleteCategory
函数更容易:
<button class="btn btn-default btn-sm" id="Cid" onclick="DeleteCategory(@item.Id)">Delete</button>
并将其修改为:
function DeleteCategory(Id) {
alert(Id);
}
答案 1 :(得分:0)
我同意上面的评论,html属性id是罪魁祸首id =“Cid”在任何html页面上,所有id都应该是唯一的。当您在DOM树中编写$(“#Cid”)其搜索并始终返回使用此id找到的第一个元素时。您必须基于item.Id生成动态ID,或者您可以将值作为参数传递给DeleteCategory()函数。希望它会有所帮助。