本文介绍如何仅用一个可复用的 jquery 函数,配合语义化 html 结构,实现点击任意按钮即异步加载对应 `.txt` 文件、淡入淡出切换内容——无需重复定义 300 次函数或硬编码按钮,兼顾性能、可维护性与可扩展性。
要优雅地支持数百个按钮各自加载独立文本文件,核心在于解耦行为逻辑与数据配置:将“哪个按钮对应哪个文件”这一映射关系从 JavaScript 函数体中抽离,转而通过 HTML 属性(如 data-file)声明式绑定。这样既避免了冗余函数和重复 HTML,又便于后期维护与批量生成。
HTML 结构(简洁且语义化):
Click Any Question Button
jQuery 脚本(单次注册、全局生效):
$(document).ready(function() {
// 统一绑定点击事件(委托至 .buttons 容器,支持动态添加按钮)
$('.buttons').on('click', '.button', function(e) {
e.preventDefault();
const fileName = $(this).data('file'); // 从 data-file 获取文件名
const $target = $('.answerBox');
if (!fileName) return;
// 淡出 → 更新文本 → 淡入(链式动画更平滑)
$target.fadeOut(300, function() {
$.get(`files/${fileName}`)
.done(function(text) {
$target.text(text.trim()); // 自动去除首尾空白,提升显示整洁度
})
.fail(function() {
$target.text('⚠️ Fa
iled to load content. Please check the file path.');
})
.always(function() {
$target.fadeIn(400);
});
});
});
});此方案将 300+ 按钮的维护成本降至最低:HTML 是声明式的清单,JS 是通用的加载引擎——真正践行“写一次,用百次”的工程原则。