You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery .each()遍历子元素时重复赋值同一ID问题求助

问题排查与解决方案

你的代码里出现所有元素ID相同的问题,核心原因有两个:

  • 全局选择器$('#ConsentID')每次循环都获取页面中第一个匹配该ID的元素值,而非当前遍历子项里的对应ID
  • HTML中多个元素使用同一个IDConsentID不符合规范,浏览器只会识别第一个匹配的ID元素

修正步骤:

  1. 修改HTML结构:把每个子项中存储ID的元素的id="ConsentID"改为class="ConsentID",确保每个子项里的ID元素用类选择器标识,示例:
<!-- 原错误写法 -->
<div class="reqconsentItem">
  <input id="ConsentID" value="加密ID1">
</div>
<div class="reqconsentItem">
  <input id="ConsentID" value="加密ID2">
</div>

<!-- 修改后写法 -->
<div class="reqconsentItem">
  <input class="ConsentID" value="加密ID1">
</div>
<div class="reqconsentItem">
  <input class="ConsentID" value="加密ID2">
</div>
  1. 修正JS代码:在遍历子元素时,通过$(this).find('.ConsentID')获取当前子项内的ID值,而非全局选择:
$(document).ready(function () {
    $(".reqconsentList").sortable({
        axis: 'y',
        update: function (event, ui) {
            var consentForms = [];

            $(this).children().each(function (index) {
                // 从当前子项中查找对应的类元素
                var currentId = $(this).find('.ConsentID').val();
                consentForms.push({ 'id': currentId, 'position': index + 1 });
            });
            
            var data = { 'sortedConsentForms': consentForms };
            $.ajax({
                data: data,
                type: 'POST',
                url: '@Url.Action("UpdateConsentDisplayOrder", "Check", new { Area = "Administration" })'
            });
        }
    });
});

额外调试建议:

可以在循环内添加console.log(currentId),打开浏览器控制台查看每个子项的ID是否正确获取,确认数据无误后再发送AJAX请求。

内容的提问来源于stack exchange,提问作者Unconquered82

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:55:16