如何循环获取动态表格每行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的方案
现有代码存在两处配置错误,是导致组件不显示的核心原因:
- 选择器不匹配:HTML中表格ID为
tblsometable,但JS中查询用的是#tblTable,无法定位到目标元素 - 配置层级错误:
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
相关产品推荐
相关产品推荐

