使用jQuery .each()遍历子元素时重复赋值同一ID问题求助
问题排查与解决方案
你的代码里出现所有元素ID相同的问题,核心原因有两个:
- 全局选择器
$('#ConsentID')每次循环都获取页面中第一个匹配该ID的元素值,而非当前遍历子项里的对应ID - HTML中多个元素使用同一个ID
ConsentID不符合规范,浏览器只会识别第一个匹配的ID元素
修正步骤:
- 修改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>
- 修正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
相关产品推荐
相关产品推荐

