如何获取动态生成元素的属性 ASP.NET
How to get attribute of dynamically generated element ASP.NET
我知道有很多关于这个主题的问题,我试过很多都无济于事。如果有人有任何建议,将不胜感激。我正在尝试获取输入的 id 属性。我已经剥离了代码以专注于这个问题。
cshtml:
@for (var i = 0; i < Model.DieRouteChecks.Count; i++)
{
<div class="col-9">
<div class="form-group newThresholdInput">
<input asp-for="@Model.DieRouteChecks[i].NewDieThresh" class="form-control" id="@Model.DieRouteChecks[i].Description">
</div>
</div>
}
我的javascript:
$(".newThresholdInput input").click(() => {
console.log($(this).attr("id")); //To see what's being returned
switch ($(this).attr('id')) {
case "Order Value":
//Do stuff
break;
case "Order Quantity":
//Do stuff
break;
}
})
单击输入时,我一直收到 undefined
记录。我试过了
$(".newThresholdInput").click(() => {
console.log($(this).find("input").attr("id"));
}
而且它只打印出第一个输入元素的 id。
我也试过使用 onclick="function(this)"
并创建一个在脚本标签中调用的事件处理程序,但仍然没有。
有趣的是 console.log($(".newThresholdInput input").attr("id"))
记录了 Order Value
,所以我猜这与我使用 $(this)
.
的方式有关
我确定我只是遗漏了一些小东西,但我不知道它可能是什么。
在你的点击事件中,this
代表了整个Window,所以它找不到你点击的元素。
将您的 js 更改为:
@for (var i = 0; i < Model.DieRouteChecks.Count; i++)
{
<div class="col-9">
<div class="form-group newThresholdInput">
<input asp-for="@Model.DieRouteChecks[i].NewDieThresh" class="form-control" id="@Model.DieRouteChecks[i].Description">
</div>
</div>
}
@section Scripts {
<script>
$(document).on('click', '.newThresholdInput input', function () {
var index = $(this).attr("id");
console.log(index);
});
</script>
}
我知道有很多关于这个主题的问题,我试过很多都无济于事。如果有人有任何建议,将不胜感激。我正在尝试获取输入的 id 属性。我已经剥离了代码以专注于这个问题。
cshtml:
@for (var i = 0; i < Model.DieRouteChecks.Count; i++)
{
<div class="col-9">
<div class="form-group newThresholdInput">
<input asp-for="@Model.DieRouteChecks[i].NewDieThresh" class="form-control" id="@Model.DieRouteChecks[i].Description">
</div>
</div>
}
我的javascript:
$(".newThresholdInput input").click(() => {
console.log($(this).attr("id")); //To see what's being returned
switch ($(this).attr('id')) {
case "Order Value":
//Do stuff
break;
case "Order Quantity":
//Do stuff
break;
}
})
单击输入时,我一直收到 undefined
记录。我试过了
$(".newThresholdInput").click(() => {
console.log($(this).find("input").attr("id"));
}
而且它只打印出第一个输入元素的 id。
我也试过使用 onclick="function(this)"
并创建一个在脚本标签中调用的事件处理程序,但仍然没有。
有趣的是 console.log($(".newThresholdInput input").attr("id"))
记录了 Order Value
,所以我猜这与我使用 $(this)
.
我确定我只是遗漏了一些小东西,但我不知道它可能是什么。
在你的点击事件中,this
代表了整个Window,所以它找不到你点击的元素。
将您的 js 更改为:
@for (var i = 0; i < Model.DieRouteChecks.Count; i++)
{
<div class="col-9">
<div class="form-group newThresholdInput">
<input asp-for="@Model.DieRouteChecks[i].NewDieThresh" class="form-control" id="@Model.DieRouteChecks[i].Description">
</div>
</div>
}
@section Scripts {
<script>
$(document).on('click', '.newThresholdInput input', function () {
var index = $(this).attr("id");
console.log(index);
});
</script>
}