无法 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');

解释:

  1. $('#Subscription_SubscriptionId').val() 表示:您从 Subscription_SubscriptionId 元素而不是 fa fa-times-circle.
  2. 元素获取值
  3. 您可以阅读@Owais Alam 的回答this post 以了解jquery 中attrdata 之间的区别。

或者您可以像这样重构您的代码

HTML:

<i class="fa fa-times-circle fa-2x" data-id="@subscription.SubscriptionId">

Jquery

var subscriptionId = $(this).data('id');