本文介绍如何使用 jQuery 读取 data.json 文件并动态渲染多个项目卡片,避免手动复制粘贴,实现静态网站内容的自动化更新。
本文介绍如何使用 jquery 读取 `data.json` 文件并动态渲染多个项目卡片,避免手动复制粘贴,实现静态网站内容的自动化更新。
在静态 HTML 网站中,手动维护项目信息(如标题、图片、描述、链接)不仅效率低,还极易出错。理想方案是将结构化数据统一存于 data.json,再通过前端脚本一次性生成全部卡片——这正是本文要解决的核心问题。
原始代码的问题在于:它反复操作同一组 DOM 元素 ID(如 #project、#project-title),导致每次循环都覆盖前一次内容,最终只显示最后一个项目。而正确的做法是:为每个项目动态创建独立的 HTML 结构,并追加到容器中。
以下是优化后的完整实现(需确保已引入 jQuery):
<!-- 在页面底部或 <head> 中引入 jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script>
$(document).ready(function() {
$.getJSON('./data/data.json', function(data) {
// 清空原有占位容器(可选,防止重复渲染)
$('#projects-container').empty();
// 遍历 projects 数组,为每个项目生成完整卡片 HTML
data.projects.forEach(function(project) {
const cardHTML = `
<div class="isotope-item col-md-6 mb-5 ${project.section}">
<div class="card project-card">
<div class="row">
<div class="col-12 col-xl-5 card-img-holder">
@@##@@
<div class="col-12 col-xl-7">
<div class="card-body">
<h5 class="card-title">${project.title}
<p class="card-text">${project.blurb}
<div class="link-mask">
<a href="${project.link}"
class="link-mask-link"
target="_blank">
<div class="link-mask-text">
<a href="${project.link}"
class="btn btn-secondary"
target="_blank">
<i class="fas fa-eye me-2">View Project
`;
// 追加到指定容器(推荐使用 class 或 data 属性而非 ID 容器)
$('#projects-container').append(cardHTML);
});
}).fail(function(jqXHR, textStatus, errorThrown) {
console.error('JSON 加载失败:', textStatus, errorThrown);
// 可选:显示友好错误提示
$('#projects-container').html('<p class="text-danger">项目数据加载失败,请检查 data.json 路径与格式。');
});
});
</script>
? 关键修改说明:
- 将原 替换为语义化容器(如 ),避免 ID 冲突;
- 使用模板字符串(`...${project.xxx}...`)拼接完整卡片 HTML,每个项目拥有独立 DOM 结构;
- 添加 .fail() 处理 JSON 加载异常,提升健壮性;
- 所有 href 属性均绑定真实链接,并添加 target="_blank" 确保外链正常跳转;
- alt 属性补充项目标题,增强可访问性(SEO 友好)。
✅ 使用前请确认:
- data.json 文件路径正确(示例中为 ./data/data.json);
- JSON 格式严格合法(建议用 JSONLint 验证);
- 页面中存在且仅有一个 #projects-container 容器元素;
- 若使用 Isotope 等布局库,渲染完成后需调用 iso.arrange() 刷新网格。
通过此方案,新增或删除项目只需修改 data.json,无需触碰 HTML 或 JS,真正实现“数据驱动视图”的轻量级静态站点自动化。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











