如何获取选中复选框所在行的价格输入框与货币选择框值?
解决选中表格行的价格与货币值获取问题
你的问题核心出在DOM元素的查找逻辑上,closest()方法是向上遍历DOM树寻找最近的祖先元素的,但价格输入框和货币选择框显然不是复选框的祖先,而是和它同属一行的兄弟/子元素,所以用closest()肯定找不到目标元素。
我来帮你修正代码:
$(document).ready(function() { $('#test').click(function(){ $("#select_update:checked").each(function() { // 先定位当前选中复选框所在的表格行 const $currentRow = $(this).closest('tr'); // 输出复选框的data-id值 console.log($(this).data('id')); // 在当前行内查找价格输入框,获取data-price属性值 console.log($currentRow.find('input[data-price]').data('price')); // 在当前行内查找货币选择框,获取data-currency属性值 console.log($currentRow.find('select[data-currency]').data('currency')); // 如果你需要获取输入框的实时输入值(而非data属性预设值),可以替换成val(): // console.log($currentRow.find('input[data-price]').val()); }); }); });
关键修正说明:
- 先用
closest('tr')锁定当前复选框所在的表格行,这样能把查找范围限制在选中行内,避免误取其他行的元素 - 用
find()配合属性选择器[data-price]/[data-currency],精准定位行内的目标输入框和选择框 - 推荐使用
data()方法读取data-*属性,它比attr()更贴合jQuery的data API规范,还能自动转换数据类型
内容的提问来源于stack exchange,提问作者user3386779
相关产品推荐
相关产品推荐

