无法 fetch/bind 更正 JQuery 中的实体 ID,始终从迭代中获取第一个项目 ID
Unable to fetch/bind correct Entity Id in JQuery, always takes first item Id from iteration
我有一个 PartialView,我在其中迭代实体集合并将它们显示在 Html Table.
中
此 table 的其中一个专栏有一个 ,字体很棒 class(fa fa-times-circle)。
我正在将此 的“id”属性 设置为我正在迭代的对象的“Id”。我正在设置一个 HiddenFor 助手来获取 jQuery 中的 Id,但我总是从 HTML table.
中获取最上面的项目
当我查看 HTML 输出时,所有 ID 似乎都很好,但是当我尝试像这样在 jQuery 中获取它时:
<script type="text/javascript">
$(function () {
$("body").delegate(".fa", "click", function () {
//Content to send
var subscriptionId = $('#Subscription_SubscriptionId').val();
$.get('@Url.Action("Action", "Controller")', { "subscriptionId": subscriptionId},
function (result) { $('#SubscriptionBody').html(result); }
);
});
});
</script>
我总是 table 的第一项。
这是我在局部视图中迭代的方式:
foreach (var subscription in Model.Subscriptions)
{
// tried both HiddenFor & Hidden but same results ... (HiddenFor should be used in my opinion)
// when iterating all Id's are "good" (Different as they should be)
@Html.HiddenFor(Model => Model.Subscription.SubscriptionId, new { Value = subscription.SubscriptionId })
// @Html.Hidden("SubscriptionId", new { Value = subscription.SubscriptionId })
<tr>
<td>@subscription.SubscriptionId</td>
<td>... some other values ...</td>
@if (condition)
{
<td>
<i class="fa fa-user-plus fa-2x" id="@subscription.SubscriptionId"></i>
</td>
}
else
{
<td>
<i class="fa fa-times-circle fa-2x" id="@subscription.SubscriptionId"></i>
</td>
}
</tr>
}
我做错了什么?显然我想检索我在 table 中单击的那个的“subscription.SubscriptionId”,但不知何故它总是排在最前面。
感谢您的任何建议或回答!
我觉得你可能会变成这样
var subscriptionId = $(this).attr('id');
解释:
$('#Subscription_SubscriptionId').val()
表示:您从 Subscription_SubscriptionId
元素而不是 fa fa-times-circle
. 元素获取值
- 您可以阅读@Owais Alam 的回答this post 以了解jquery 中
attr
和data
之间的区别。
或者您可以像这样重构您的代码
HTML:
<i class="fa fa-times-circle fa-2x" data-id="@subscription.SubscriptionId">
Jquery
var subscriptionId = $(this).data('id');
我有一个 PartialView,我在其中迭代实体集合并将它们显示在 Html Table.
中此 table 的其中一个专栏有一个 ,字体很棒 class(fa fa-times-circle)。
我正在将此 的“id”属性 设置为我正在迭代的对象的“Id”。我正在设置一个 HiddenFor 助手来获取 jQuery 中的 Id,但我总是从 HTML table.
中获取最上面的项目当我查看 HTML 输出时,所有 ID 似乎都很好,但是当我尝试像这样在 jQuery 中获取它时:
<script type="text/javascript">
$(function () {
$("body").delegate(".fa", "click", function () {
//Content to send
var subscriptionId = $('#Subscription_SubscriptionId').val();
$.get('@Url.Action("Action", "Controller")', { "subscriptionId": subscriptionId},
function (result) { $('#SubscriptionBody').html(result); }
);
});
});
</script>
我总是 table 的第一项。
这是我在局部视图中迭代的方式:
foreach (var subscription in Model.Subscriptions)
{
// tried both HiddenFor & Hidden but same results ... (HiddenFor should be used in my opinion)
// when iterating all Id's are "good" (Different as they should be)
@Html.HiddenFor(Model => Model.Subscription.SubscriptionId, new { Value = subscription.SubscriptionId })
// @Html.Hidden("SubscriptionId", new { Value = subscription.SubscriptionId })
<tr>
<td>@subscription.SubscriptionId</td>
<td>... some other values ...</td>
@if (condition)
{
<td>
<i class="fa fa-user-plus fa-2x" id="@subscription.SubscriptionId"></i>
</td>
}
else
{
<td>
<i class="fa fa-times-circle fa-2x" id="@subscription.SubscriptionId"></i>
</td>
}
</tr>
}
我做错了什么?显然我想检索我在 table 中单击的那个的“subscription.SubscriptionId”,但不知何故它总是排在最前面。
感谢您的任何建议或回答!
我觉得你可能会变成这样
var subscriptionId = $(this).attr('id');
解释:
$('#Subscription_SubscriptionId').val()
表示:您从Subscription_SubscriptionId
元素而不是fa fa-times-circle
. 元素获取值
- 您可以阅读@Owais Alam 的回答this post 以了解jquery 中
attr
和data
之间的区别。
或者您可以像这样重构您的代码
HTML:
<i class="fa fa-times-circle fa-2x" data-id="@subscription.SubscriptionId">
Jquery
var subscriptionId = $(this).data('id');