请求简化重复的jQuery标签点击动画代码
jQuery代码简化方案
方案一:不修改HTML结构,直接简化JS
// 统一绑定所有标签的点击事件 jQuery("#state-of-the-art .fl-tabs-label, #everything-you-need .fl-tabs-label, #monitor-your-sites .fl-tabs-label").click(function() { // 找到当前点击标签所在的父容器 const $container = jQuery(this).closest('[id]'); // 调用通用动画函数处理对应面板 animateTabPanel($container.find('.fl-tabs-panel')); }); // 提取通用的动画逻辑函数 function animateTabPanel($panel) { $panel.addClass("tab-animation-fadeup"); setTimeout(function () { $panel.removeClass("tab-animation-fadeup"); }, 400); }
方案二:给容器加公共类(更优雅,推荐)
如果可以修改HTML,给三个带ID的容器都加一个公共类(比如tab-group):
<div id="state-of-the-art" class="tab-group">...</div> <div id="everything-you-need" class="tab-group">...</div> <div id="monitor-your-sites" class="tab-group">...</div>
对应的JS代码会更简洁:
// 绑定所有tab-group下的标签点击事件 jQuery(".tab-group .fl-tabs-label").click(function() { const $panel = jQuery(this).closest('.tab-group').find('.fl-tabs-panel'); animateTabPanel($panel); }); function animateTabPanel($panel) { $panel.addClass("tab-animation-fadeup"); setTimeout(() => $panel.removeClass("tab-animation-fadeup"), 400); }
简化思路说明
- 统一事件绑定:把多个重复的
click事件合并成一个,避免冗余代码 - 利用DOM关系定位元素:不再硬编码每个容器ID,通过
closest()找到当前点击元素的父容器,再定位到对应的面板,后续新增tab组无需修改JS - 提取通用逻辑:把重复的动画操作封装成独立函数,复用代码的同时,也方便后续统一调整动画细节(比如延迟时间、类名)
内容的提问来源于stack exchange,提问作者Jeric G
相关产品推荐
相关产品推荐

