我试图从Razor视图中将动态创建的TextBox ID转换为jQuery。 ID以HTML格式创建,如下所示:
Product - 1: cartDetails_0__Quantity
Product - 2: cartDetails_1__Quantity
现在,当我将上述输入直接提供给Ajax调用时,它会更新相应的行。举个例子:
@if (ViewBag.Cart != null)
{
for (int i = 0; i < cartDetails.Count(); i++)
{
<tr>
<td style="text-align: center;">@Html.TextBoxFor(model => cartDetails[i].Id)</td>
<td style="text-align: center;">@Html.DisplayFor(model => cartDetails[i].IP)</td>
<td style="text-align: center;">@Html.DisplayFor(model => cartDetails[i].ProductName)</td>
<td style="text-align: center;">@Html.DisplayFor(model => cartDetails[i].Price)</td>
<td style="text-align: center;">@Html.TextBoxFor(model => cartDetails[i].Quantity, new { @class = "quantityUpdate", data_id = cartDetails[i].Id })</td>
</tr>
}
}
var url = '@Url.Action("UpdateCart2")';
$(".quantityUpdate").change(function () {
var id = $(this).data('id');
$('.quantityUpdate').each(function (i, item) {
$.post(url, { id: id, quantity: $('#cartDetails_' + 0 + '__Quantity').val() }, function (response) { //cartDetails_0__Quantity - The first TextBox ID
if (response) {
$("#TotalPrice").load(window.location + " #TotalPrice");
}
});
})
alert($('#cartDetails_' + 0 + '__Quantity').val());
});
有没有办法循环使用jQuery来获取Razor中动态生成的TextBox ID?我尝试了以下但没有得到价值:
$('.quantityUpdate').each(function (i, item) {
$.post(url, { id: id, quantity: $('#cartDetails_' + i + '__Quantity').val() }, function (response) { //cartDetails_0__Quantity - The first TextBox ID
if (response) {
$("#TotalPrice").load(window.location + " #TotalPrice");
}
});
})
即使尝试了这个,但它只获得第一个TextBox的值:
$('.quantityUpdate').each(function (i, item) {
$.post(url, { id: id, quantity: $(this).val() }, function (response) { //cartDetails_0__Quantity - The first TextBox ID
if (response) {
$("#TotalPrice").load(window.location + " #TotalPrice");
}
});
})
注意:我正在尝试使用Ajax调用更新为TextBox提供输入的行。 TextBox在视图中处于循环中。在这方面,我要获取动态生成的HTML ID的ID。
答案 0 :(得分:1)
您可以使用动态创建元素的create事件来获取其ID。 但请记住使用它需要使用On()。见http://api.jquery.com/on/
另见: Event binding on dynamically created elements? In jQuery, how to attach events to dynamic html elements?
PS。如果有更简洁的方法来获取动态创建的元素,我也很乐意得到它:)
编辑。也许我不够清楚。没有确切的“创造”事件。你可以将你需要的任何动作挂钩到On()