jQuery如何选中表格行内多段.is类连续元素的首尾节点?
实现代码
$('.row-months').each((i, row) => { // 先重置旧标记,兼容动态更新场景 $(row).find('.isf, .isl').removeClass('isf isl').addClass('is'); // 遍历当前行所有单元格 $(row).children('td').each((idx, cell) => { const $cell = $(cell); const isCurrentIs = $cell.hasClass('is'); const $prev = $cell.prev(); const $next = $cell.next(); const isPrevIs = $prev.length ? $prev.hasClass('is') : false; const isNextIs = $next.length ? $next.hasClass('is') : false; // 匹配连续.is段的开头:当前是.is,前一个节点不是.is if (isCurrentIs && !isPrevIs) { $cell.removeClass('is').addClass('isf'); } // 匹配连续.is段的结尾:当前是.is,后一个节点不是.is if (isCurrentIs && !isNextIs) { $cell.removeClass('is').addClass('isl'); } }) })
逻辑说明
- 逐行逐单元格判断状态,不需要提前分组连续.is元素,一次遍历即可完成所有标记,性能开销低
- 判定规则完全匹配需求:只要相邻节点不带.is类,就判定为连续段的首尾边界,支持任意数量的连续.is段
- 开头的类名重置逻辑适配表格动态生成、多次更新的场景,不会出现旧标记残留的错误
- 逻辑完全对齐你原有代码的类名替换规则,不需要修改后续的样式和业务逻辑
内容的提问来源于stack exchange,提问作者user7862339
相关产品推荐
相关产品推荐

