jq动态拼接html页面及数据

本文介绍了如何使用jQuery的append()和html()方法动态拼接HTML页面和数据,通过示例代码展示了在不同场景下如何进行DOM操作。详细解释了在医疗质量、运营效率等模块的数据加载和表格构建过程,提供了模板引擎封装数据的另一种解决方案,如腾讯template的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这之前我们需要了解下apppend()与html()这两个方法的区别:

简单来说就是append()方法是在元素列表添加某个元素,但是html()是替换元素中的数据。如果需要做换页,导航此类的效果最好使用html()方法

详情可参考:[append()与html()区别](()

废话不多说直接上代码:

1.首先 在需要动态拼接的地方的父级标签可以加上一个id或者class类名 区别倒是不大 个人都是加className 如下(templateArea即是 我们会在其下面拼接html页面及数据):

医疗质量

运营效率

持续发展

满意度

返回

保存

2.ajax获取到数据 根据数据情况和需求可自主选择拼接流程 以下为我个人需求拼接:

主要步骤为:

a.新建变量用来存放页面 即:var list=""

b.将对应页面放到list中 如需要放一个input 则为:list+=“input标签” 主要就是这种格式

c.最后就是$(".templateArea").append(list)

大概就是这三步 但是需求都是不一样的 所以说根据自己情况进行改动 有这个思路就可

function getTemplateList(param) {

jQuery.ajax({

url: systemBaseInterface + “/sustainedAdd/findSustainedTemplateList”,

type: “POST”,

cache: false,

async: false,

data: param,

dataType: “json”,

success: function (data, text) {

var list = “”;

for (var i = 0; i < data.data.length; i++) {

if (i == 0) {

list += “<div class=“content”>\n” +

" <div class=“title”>" + data.data[i].content + “<span style=“float: right”>” + ${year !} + “\n” +

" <table class=“content_table”>\n" +

" \n" +

" \n" +

" \n" +

" \n" +

" \n" +

" "

} else {

list += “<div class=“content”>\n” +

" <div class=“title”>" + data.data[i].content + “\n” +

" \n" +

“<table class=“content_table functionalPositionArea”>\n” +

" \n" +

" \n" +

" \n" +

" \n" +

" \n" +

" "

}

jQuery.ajax({

url: systemBaseInterface + “/sustainedAdd/findSustainedTemplateList”,

type: “POST”,

cache: false,

async: false,

data: {“parentCode”: data.data[i].code},

dataType: “json”,

success: function (data, text) {

for (var j = 0; j < data.data.length; j++) 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 {

var content = JSON.parse(htmlDecode(data.data[j].content))

if (content.threeType == “定性”) {

list += " \n" +

" <td class=“content_table_label”>" + content.threeName + “\n” +

" <td colspan=“3”>\n" +

" <div class=“content_table_block content_table_block1”>\n" +

" <div class=“dropdown”>\n" +

" <input name=“” autocomplete=“off” type=“text” data-name=" + content.threeName + " data-code=" + data.data[j].code + " id=“+ data.data[j].code +” data-count=" + data.data[j].isCount + " code=" + data.data[j].code + " class=“dropdown_input normal result” readonly=“readonly” placeholder=“请选择” style=“cursor: auto;”>\n" +

" <img alt=“选择” src=“…/img/dropdown.png” class=“dropdown_img”>\n" +

" <ul class=“dropdown_menu”>"

for (var k = 0; k < content.option.length; k++) {

list += " <li class=“overflow dropdown_menu_li” code=" + k + 1 + “>” + content.option[k].xuanxiang + “\n”

}

list += " \n" +

" \n" +

" \n" +

" \n" +

" "

} else if (content.threeType == “定量”) {

for (var k = 0; k < content.tiaojian.length; k++) {

if (k == 0) {

var kk = k + 1;

list += " \n" +

" <td class=“content_table_label” rowspan=" + content.tiaojian.length + “>” + content.threeName + “\n” +

" \n" +

" <div class=“content_table_block”>\n" +

" <input type=“text” class=“content_table_block_text result result_type3” data-count=" + data.data[j].isCount + " data-code=" + data.data[j].code + " data-name=" + content.threeName + " code=" + data.data[j].code + " id=“value” + data.data[j].code + “_result”>\n" +

" <span class=“unit overflow”>" + content.threeUnit + “\n” +

" \n" +

" \n" +

" <td class=“content_table_label”>" + content.tiaojian[0].condition + “\n” +

" \n" +

" <div class=“content_table_block”>\n" +

" <input type=“text” class=“content_table_block_text condition " + data.data[j].code + “condition" data-name=" + content.threeName + " data-count=" + data.data[j].isCount + " data-code=" + data.data[j].code + " code=" + data.data[j].code +"”+kk +” οnkeyup=‘keyUp(data.data[j].code,JSON.stringify(content.suanfa))’ id=" + data.data[j].code +“_”+kk +“>\n” +

" <span class=“unit overflow”>" + content.tiaojian[0].conditionUnit + “\n” +

" \n" +

" \n" +

" "

} else {

var kk = k + 1;

list += “\n” +

" <td class=“content_table_label”>" + content.tiaojian[k].condition + “\n” +

" \n" +

" <div class=“content_table_block”>\n" +

" <input type=“text” class=“content_table_block_text condition " + data.data[j].code + “condition" data-name=" + content.threeName + " οnkeyup=‘keyUp(" + data.data[j].code + “,” + JSON.stringify(content.suanfa) + ")’ data-code=" + data.data[j].code + " data-count=" + data.data[j].isCount + " code=" + data.data[j].code +"”+kk +” id=" + data.data[j].code +“_”+kk +“>\n” +

" <span class=“unit overflow”>" + content.tiaojian[k].conditionUnit + “\n” +

" \n" +

" \n" +

" "

}

}

} else {

list += “\n” +

" <td class=“content_table_label”>" + content.threeName + “\n” +

" <td colspan=“3”>\n" +

" <div class=“content_table_block”>\n" +

" <input type=“text” class=“content_table_block_text result” data-name=" + content.threeName + " data-count=" + data.data[j].isCount + " data-code=" + data.data[j].code + " code=" + data.data[j].code + " id=“+ data.data[j].code +”>\n" +

" <span class=“unit overflow”>" + content.threeUnit + “\n” +

" \n" +

" \n" +

" "

}

}

list += “\n” +

" "

}

})

}

$(“.templateArea”).append(list)

}

})

}

这里是我的拼装代码 我是分三种情况进行拼接的 因需求而异 这种方法笨是笨了点 不过身为后台开发的 有时候想不到思路的话这种拼接倒也不失为一种解决方案

最后给大家看下效果:

在这里插入图片描述

我这里是先加载头信息 bb 然后加载的是三种不同的框(下拉框 输入框 两条件一结果框)

[](()二、腾讯template封装数据


这里给大家扩展一个其他的封装数据的方法 template模板引擎框架 这里是在腾讯template基础上使用 些许改变

我用的是template-native-3.0.1.js 大家有兴趣可以找下源码看下

个人认为template用于这些table之类的循环是挺爽的(大佬勿喷)

使用如下:

1.首先 js获取到后台数据列表 通过template进行封装

user.userData = function (param) {

return $.ajax({

url: systemBaseInterface + “/base/userData”,

data: param,

failed: function (code, msg) {

DiaLogBox.error(msg);

},

success: function (data) {

template.loadData(“user”, data.data, function (ele) {

$(ele).show();

user.tableInit();

});

$(“#userlist”).setPager(data.data, function () {

user.userData(param);

});

}

});

};

2.然后在页面调用方法如下:

页面调用主要分为几步:

a.设置template-name="你在js中设置的名字"

b.循环数据(我这里的list是因为我是分页 最后一层是list目录 然后你们可以看数据情况进行循环)

c.放入数据即可

在这里插入图片描述

3.效果如下:

在这里插入图片描述

最后给大家放下template-native-3.0.1.js源码 有兴趣看下:

!function () {

function a(a) {

return a.replace(t, “”).replace(u, “,”).replace(v, “”).replace(w, “”).replace(x, “”).split(/^$|,+/)

}

function b(a) {

return “'” + a.replace(/(‘|\)/g, “\$1”).replace(/\r/g, “\r”).replace(/\n/g, “\n”) + "’"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值