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

如何在jQuery的.each()中添加一组不同值?现有代码未达预期求助

解决jQuery .each()循环中收集不同值的问题

看起来你遇到的核心问题是在.each()循环里处理多个元素的data值时,没有正确收集或设置这些值,导致最终结果不符合预期。我来帮你梳理下问题并给出解决方案:

先分析你的代码场景

你的HTML结构里,每个.removeJiku按钮后面跟着一个带data-thisPostId属性的.removeId span,目标应该是把这些不同的ID值收集起来,放到#usp-form-253 #usp-custom-3这个表单元素里对吧?

常见错误原因

如果你的原代码是在.each()循环里直接给目标元素赋值,那每次循环都会覆盖之前的值,最后只会保留最后一个ID——这大概率就是你没实现预期的原因。

修正方案1:页面加载时收集所有ID

如果是页面加载时就需要把所有data-thisPostId的值都收集起来,用逗号分隔存入表单字段,可以这么写:

<!-- 你的HTML结构 -->
<button type="button" class="removeJiku btn btn-danger">Remove</button> 
<span class="removeId" data-thisPostId="248"></span> 
<button type="button" class="removeJiku btn btn-danger">Remove</button> 
<span class="removeId" data-thisPostId="242"></span>
// 初始化数组来存储所有ID
const removeIds = [];

$(".removeJiku").each(function() {
    // 用jQuery的data()方法获取data属性,比attr()更可靠(自动处理类型)
    const removeThisId = $(this).next(".removeId").data("thisPostId");
    // 确保ID有效再加入数组
    if (removeThisId) {
        removeIds.push(removeThisId);
    }
});

// 把数组转成逗号分隔的字符串,设置到目标表单元素
$("#usp-form-253 #usp-custom-3").val(removeIds.join(','));

修正方案2:点击按钮时添加对应ID

如果你的需求是点击某个Remove按钮时,把它对应的ID添加到表单字段(而不是一次性收集所有),那应该给按钮绑定点击事件,而不是直接用.each()遍历:

$(".removeJiku").on("click", function() {
    const removeThisId = $(this).next(".removeId").data("thisPostId");
    if (!removeThisId) return; // 无有效ID则终止

    // 获取表单字段当前值,追加新ID(避免覆盖)
    const currentValue = $("#usp-form-253 #usp-custom-3").val();
    const newValue = currentValue ? `${currentValue},${removeThisId}` : removeThisId;
    
    $("#usp-form-253 #usp-custom-3").val(newValue);
});

关键要点

  • 用data()代替attr()获取data属性:jQuery的data()会自动解析属性值的类型(比如把字符串"248"转成数字248),而且能缓存数据,性能更好。
  • 避免循环内直接赋值:如果要收集多个值,先存到数组或变量里,循环结束后统一设置,防止被覆盖。
  • 做有效性校验:确保获取到的ID不是空值,避免无效数据混入。

内容的提问来源于stack exchange,提问作者rob.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:41:14