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

能否中断jQuery each迭代、修改值后继续执行?附代码示例

解答:jQuery each迭代的中断、修改与继续执行

当然可以实现中断jQuery的each迭代,处理完特定值后再继续执行!下面结合你的代码场景详细说明:

1. 核心知识点:jQuery each的控制逻辑

在jQuery的.each()迭代中:

  • 跳过当前迭代(类似continue):在回调函数里执行 return true;
  • 终止整个迭代(类似break):在回调函数里执行 return false;

如果你的需求是找到特定元素,修改对应的值后继续遍历剩下的元素,其实不需要完全终止迭代,只需要在匹配到目标时修改数据,然后让迭代继续即可;如果需要先中断迭代做一些额外处理,之后再手动触发剩余元素的遍历,也可以轻松实现。

2. 结合你的代码示例的实现

场景1:修改特定元素的值后继续迭代

比如你想找到name为"target"的input,修改它的value后继续把所有元素的键值推入数组:

var aKeys = new Array(), aValues = new Array(), sArray = {};
$('input').each(function (index, element) {
    var sKey = $(this).attr('name'), sValue = $(this).val();
    
    // 找到目标元素,修改对应值
    if (sKey === 'target') {
        sValue = '修改后的新值'; 
        // 也可以直接修改元素本身的value:$(this).val('新值');
    }
    
    aKeys.push(sKey);
    aValues.push(sValue);
    
    // 如果需要跳过某个元素(比如name为"skip"的元素),可以用这行
    // if (sKey === 'skip') return true;
});

// 后续创建目标对象的逻辑
for(var i = 0; i < aKeys.length; i++){
    sArray[aKeys[i]] = aValues[i];
}

场景2:中断迭代,处理后手动继续遍历

如果需要先完全中断迭代,做一些额外处理(比如异步请求获取数据),之后再遍历剩余的元素,可以记录当前中断的索引,之后从该索引开始继续遍历:

var aKeys = new Array(), aValues = new Array(), sArray = {};
var breakIndex = -1; // 记录中断的位置

$('input').each(function (index, element) {
    var sKey = $(this).attr('name'), sValue = $(this).val();
    
    // 遇到需要中断处理的条件
    if (sKey === 'needBreak') {
        breakIndex = index; // 记录当前索引
        // 先把当前元素修改后的值推入数组
        sValue = '中断处理后的新值';
        aKeys.push(sKey);
        aValues.push(sValue);
        return false; // 终止当前迭代
    }
    
    aKeys.push(sKey);
    aValues.push(sValue);
});

// 这里做中断后的额外处理(比如异步操作)
// 假设处理完成后,继续遍历剩余元素
if (breakIndex !== -1) {
    $('input').slice(breakIndex + 1).each(function (index, element) {
        var sKey = $(this).attr('name'), sValue = $(this).val();
        aKeys.push(sKey);
        aValues.push(sValue);
    });
}

// 最终创建目标对象
for(var i = 0; i < aKeys.length; i++){
    sArray[aKeys[i]] = aValues[i];
}

3. 额外优化提示

其实你最终要创建键值对对象sArray,可以不用额外维护两个数组,直接在each里构建对象会更简洁:

var sArray = {};
$('input').each(function (index, element) {
    var sKey = $(this).attr('name'), sValue = $(this).val();
    
    // 处理修改逻辑
    if (sKey === 'target') {
        sValue = '新值';
    }
    
    sArray[sKey] = sValue;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:34:57