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

如何循环获取动态表格每行Jpicker值及页面重载后恢复Jpicker组件

问题1:获取每行jPicker对应值的方案

原因:现有代码固定调用$.jPicker.List[0],指向的永远是页面第一个初始化的jPicker实例,所以循环取值全部重复。

正确实现代码:

let Grid = '';
$('#tblCUS tbody tr').each(function () {
  // 定位当前行内的颜色选择器元素
  const $currentPicker = $(this).find('.colorPicker');
  // 直接通过元素调用jPicker方法获取当前选中值
  const color = '#' + $currentPicker.jPicker('color').active.val('ahex');
  Grid += color + '♥';
});

如果需要用全局List取值,也可以通过元素的jPicker实例索引获取,上述方法更直接,不易出错。

问题2:页面重载后渲染jPicker的方案

现有代码存在两处配置错误,是导致组件不显示的核心原因:

  1. 选择器不匹配:HTML中表格ID为tblsometable,但JS中查询用的是#tblTable,无法定位到目标元素
  2. 配置层级错误:color配置项是jPicker的顶层参数,之前写在了window属性内部,导致预设颜色不生效,甚至组件初始化失败

修正后的页面加载初始化代码如下:

$(function () {
  // 修正为正确的表格ID,匹配HTML中的元素
  $('#tblsometable tbody tr .colorPicker').each(function () {
    // 读取元素上存储的预设颜色值
    const activeColor = $(this).attr('value');
    $(this).jPicker({
      window: {
        expandable: true,
        position: {
          x: 'right',
          y: 'bottom'
        }
      },
      // color配置移到window同级
      color: {
        active: activeColor
      }
    });
  });
});

额外补充动态添加行的兼容逻辑:每次点击AddNewRow生成新行后,单独对新行内的.colorPicker元素执行上述初始化逻辑即可,无需全量遍历所有行,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:06