本文介绍使用 jquery 动态为多个具有相同 css 类的表头元素统一绑定 click 事件,并根据点击的表头文本自动匹配并选中对应 class 的所有单选按钮,避免重复代码,提升可维护性。
本文介绍使用 jquery 动态为多个具有相同 css 类的表头元素统一绑定 click 事件,并根据点击的表头文本自动匹配并选中对应 class 的所有单选按钮,避免重复代码,提升可维护性。
在实际开发中,我们常遇到类似需求:页面上有多个带 .Routes 类的表头(如 <span class="Routes">Purchased</span>、<span class="Routes">BST</span>),点击任一表头时,需将表格中所有属于该类别(如 class="Purchased" 或 class="BST")的单选按钮设为 checked。若为每个表头单独写事件监听器(如 $('#Purchased').on(...)),面对 17+ 个类别将导致冗余且难以维护。
推荐解法:委托式单事件监听 + 动态类名推导
无需遍历、无需预存数组、无需手动拼接 ID,直接为所有 .Routes 元素绑定一个事件处理器,并在触发时动态提取文本内容,转换为合法 CSS 类选择器:
$('.Routes').on('click', function(e) { // 获取点击元素的可见文本,替换空格为下划线(适配类名规范,如 "Purchased" → "Purchased","In Progress" → "In_Progress") const className = e.target.textContent.trim().replace(/s+/g, '_'); // 使用动态生成的类名,批量设置对应 radio 按钮的 checked 属性 $(`.${className}`).prop('checked', true);});
✅ 优势说明:
⚠️ 注意事项:
通过这一模式,17 个路由表头只需 4 行核心代码即可全部覆盖,真正实现「写一次,用 everywhere」的工程化实践。