【发布时间】:2020-05-30 09:16:16
【问题描述】:
我在剃须刀页面中使用 JS 从 foreach 中的 col 获取动态 ID。
在过去,我使用过它并且效果很好。但是,无论我点击哪一个,它似乎目前都只从第一个 col 中获取 ID。
有人可以告诉我我是否仍然这样做正确吗?或者,如果我遗漏了什么。谢谢。
查看:
<div class="list-group container" id="JobRequestMonitorTable">
<div class="row list-group-item list-group-item-heading container divTableHeading" style="margin-bottom:0px;">
<div class="col-md-4"> Job Code </div>
<div class="col-md-4"> Description </div>
<div class="col-md-2"> Schedule </div>
<div class="col-md-1"> Running </div>
<div class="col-md-1"></div>
</div>
@if (!string.IsNullOrEmpty(ViewBag.ErrorMessage))
{
<div class="row list-group-item-danger">
<div class="col-md-1 text-center">@ViewBag.ErrorMessage</div>
</div>
}
@foreach (var item in Model.JobRequests)
{
<div class="row list-group-item container">
<div class="hidden" data-id="@item.JobRequestId" id="requestId">@item.JobRequestId</div>
<div class="col-md-4">@item.JobCode</div>
<div class="col-md-4">@item.Description</div>
<div class="col-md-2">@item.Schedule</div>
@if (@item.IsRunning == true)
{
<div class="col-md-1" style="margin-left:25px;"><span class="glyphicon glyphicon-ok"></span></div>
<div class="col-md-1"></div>
}
else
{
<div class="col-md-1"></div>
<div class="col-md-1">
<button class="glyphicon glyphicon-list-alt btn btn-primary" id="paramModalBtn" name="paramsBtn"></button>
</div>
}
</div>
}
</div>
JS:
$("button").click(function () {
var col = $('#requestId');
var jobRequestId = col.data('Id');
$.ajax({
url: '@Url.Action("JobPollerParameters", "Tools")',
data: { "jobRequestId": jobRequestId},
success: function (results) {
$modal = $('#paramsModal');
$modal.modal("show");
var arr = results;
//loop through arr created from dictionary to grab key(s)
for (var key in arr) {
if (arr.hasOwnProperty(key)) {
var myKey = key;
}
}
var name = myKey;
var value = results[myKey];
$('#modalName').text(name);
$('#modalMessage').text(value);
}
});
});
真正在 JS 中看到的唯一重要部分是 var col = $('#requestId');
var jobRequestId = col.data('Id');
但我想我会包含整个脚本以防万一有人问。
【问题讨论】:
-
当
id属性在DOM 中必须是唯一的 时,您的循环将创建多个#requestId元素。更改逻辑以改用类。然后你可以遍历 DOM 找到与被点击的按钮相关的元素 -
@RoryMcCrossan 所以只要给那个 col 一个唯一的类并在选择器中使用它?
-
你能用 col.attr('id');
-
@Jacked_Nerd 不要对所有这些使用相同的类。我已经添加了一个答案来给你一个工作示例
标签: javascript jquery asp.net-mvc razor razor-pages