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

如何在jQuery循环中匹配特定条件的首尾项并新增div?

实现方案

你可以先提前遍历一次接口返回的列表,收集所有type为Hidden的项的索引,拿到首尾符合条件的项的位置后,再在原来的渲染循环里做判断即可,完整代码如下:

// 第一步:预处理数据,收集所有Hidden类型项的索引
const hiddenIndexes = []
$.each(obj.dynamicList, function(i, v) {
  if(v.type === 'Hidden') {
    hiddenIndexes.push(i)
  }
})
// 判空:如果不存在符合条件的Hidden项直接跳过后续逻辑
if(hiddenIndexes.length > 0) {
  const firstHiddenIdx = hiddenIndexes[0]
  const lastHiddenIdx = hiddenIndexes[hiddenIndexes.length - 1]

  // 原来的渲染逻辑
  $.each(obj.dynamicList, function(i, v){
      var label    = v['label'];
      var name     = v['id'];
      var value    = v['value'];
      var required = v['required'];
      var type     = v['type'];
      var list     = v['list'];

      if(v['type'] == "Input" && v['id'] == "email" ){
          $('#part3_append_form').append("<div class='form-group'><label class='ssjob-label'>"+ label +"</label><input type='email' class='form-control' "+ (required == 'Y' ? 'required': '') + "  id='"+ name +"' name='"+ name +"' value='"+ email +"'></div>");
      
      }else if( v['type'] == "Hidden"){
        // 判断当前是不是第一个Hidden,是则先追加开头的div
        if(i === firstHiddenIdx) {
          $('#part3_append_form').append("<div class='自定义类名'>你需要新增的开头div内容</div>")
        }
        $('#part3_append_form').append("<input type='hidden' class='form-control' name='"+ name +"' value='"+ value +"'>");
        // 判断当前是不是最后一个Hidden,是则追加结尾的div
        if(i === lastHiddenIdx) {
          $('#part3_append_form').append("<div class='自定义类名'>你需要新增的结尾div内容</div>")
        }
      
      }else{
          $('#part3_append_form').append("<div class='form-group'><label class='ssjob-label'>"+ label +"</label><input type='text' "+ (required == 'Y' ? 'required': '') + " class='form-control' id='"+ name +"' name='"+ name +"' value='"+ value +"'></div>");
      } 
  });
}

逻辑说明

  • 两次遍历的性能损耗可以忽略,绝大多数场景下接口返回的表单项数量都不会超过千级,不会有性能问题
  • 提前做了空判断,当接口返回没有Hidden类型的项时不会触发额外逻辑,避免报错
  • 你可以根据实际需求调整div插入的位置:如果需要把所有Hidden项包裹在同一个div里,就把开头div放在第一个Hidden之前插入,结尾div放在最后一个Hidden之后插入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:42:01