一、jq动态拼接html页面

需求:
1.页面内容不是死的
2.根据后台数据动态加载页面数据

实现:

在这之前我们需要了解下apppend()与html()这两个方法的区别:
简单来说就是append()方法是在元素列表添加某个元素,但是html()是替换元素中的数据。如果需要做换页,导航此类的效果最好使用html()方法

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

废话不多说直接上代码:

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

<body>
<div class="page"><div class="tab_line clearfix"><a class="tab_line_a" href="/reportPage?mainId=${mainId !}&year=${year !}&isFillIn=${mainId !}">医疗质量</a><a class="tab_line_a" href="/reportPageOperate?mainId=${mainId !}&year=${year !}&isFillIn=${isFillIn !}">运营效率</a><a class="tab_line_a now_a">持续发展</a><a class="tab_line_a" href="/reportPageSatisface?mainId=${mainId !}&year=${year !}&isFillIn=${isFillIn !}">满意度</a></div><div class="templateArea"></div><div class="bottom"><a href="/homepage" class="operation_line_button fr">返回</a><div class="operation_line_button operation_line_button_blue fr save">保存</div></div>
</div>
</body>

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 !} + "</span></div>\n" +"                <table class=\"content_table\">\n" +"                    <tr>\n" +"                        <th></th>\n" +"                        <th></th>\n" +"                        <th></th>\n" +"                        <th></th>\n" +"                    </tr>"} else {list += "<div class=\"content\">\n" +"            <div class=\"title\">" + data.data[i].content + "\n" +"            </div>\n" +"<table class=\"content_table functionalPositionArea\">\n" +"                <tr>\n" +"                    <th></th>\n" +"                    <th></th>\n" +"                    <th></th>\n" +"                    <th></th>\n" +"                </tr>"}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++) {var content = JSON.parse(htmlDecode(data.data[j].content))if (content.threeType == "定性") {list += " <tr>\n" +"                    <td class=\"content_table_label\">" + content.threeName + "</td>\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 + "</li>\n"}list += " </ul>\n" +"                            </div>\n" +"                        </div>\n" +"                    </td>\n" +"                </tr>"} else if (content.threeType == "定量") {for (var k = 0; k < content.tiaojian.length; k++) {if (k == 0) {var kk = k + 1;list += " <tr>\n" +"                    <td class=\"content_table_label\" rowspan=" + content.tiaojian.length + ">" + content.threeName + "</td>\n" +"                    <td rowspan=" + content.tiaojian.length + ">\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 + "</span>\n" +"                        </div>\n" +"                    </td>\n" +"                    <td class=\"content_table_label\">" + content.tiaojian[0].condition + "</td>\n" +"                    <td>\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 + "</span>\n" +"                        </div>\n" +"                    </td>\n" +"                </tr>"} else {var kk = k + 1;list += "<tr>\n" +"                    <td class=\"content_table_label\">" + content.tiaojian[k].condition + "</td>\n" +"                    <td>\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 + "</span>\n" +"                        </div>\n" +"                    </td>\n" +"                </tr>"}}} else {list += "<tr>\n" +"                    <td class=\"content_table_label\">" + content.threeName + "</td>\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 + "</span>\n" +"                        </div>\n" +"                    </td>\n" +"                </tr>"}}list += "</table>\n" +"            </div>"}})}$(".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") + "'"}function c(c, d) {function e(a) {return m += a.split(/\n/).length - 1, k && (a = a.replace(/\s+/g, " ").replace(/<!--.*?-->/g, "")), a && (a = s[1] + b(a) + s[2] + "\n"), a}function f(b) {var c = m;if (j ? b = j(b, d) : g && (b = b.replace(/\n/g, function () {return m++, "$line=" + m + ";"})), 0 === b.indexOf("=")) {var e = l && !/^=[=#]/.test(b);if (b = b.replace(/^=[=#]?|[\s;]*$/g, ""), e) {var f = b.replace(/\s*\([^\)]+\)/, "");n[f] || /^(include|print)$/.test(f) || (b = "$escape(" + b + ")")} else b = "$string(" + b + ")";b = s[1] + b + s[2]}return g && (b = "$line=" + c + ";" + b), r(a(b), function (a) {if (a && !p[a]) {var b;b = "print" === a ? u : "include" === a ? v : n[a] ? "$utils." + a : o[a] ? "$helpers." + a : "$data." + a, w += a + "=" + b + ",", p[a] = !0}}), b + "\n"}var g = d.debug, h = d.openTag, i = d.closeTag, j = d.parser, k = d.compress, l = d.escape, m = 1,p = {$data: 1, $filename: 1, $utils: 1, $helpers: 1, $out: 1, $line: 1}, q = "".trim,s = q ? ["$out='';", "$out+=", ";", "$out"] : ["$out=[];", "$out.push(", ");", "$out.join('')"],t = q ? "$out+=text;return $out;" : "$out.push(text);",u = "function(){var text=''.concat.apply('',arguments);" + t + "}",v = "function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);" + t + "}",w = "'use strict';var $utils=this,$helpers=$utils.$helpers," + (g ? "$line=0," : ""), x = s[0],y = "return new String(" + s[3] + ");";r(c.split(h), function (a) {a = a.split(i);var b = a[0], c = a[1];1 === a.length ? x += e(b) : (x += f(b), c && (x += e(c)))});var z = w + x + y;g && (z = "try{" + z + "}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:" + b(c) + ".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try {var A = new Function("$data", "$filename", z);return A.prototype = n, A} catch (B) {throw B.temp = "function anonymous($data,$filename) {" + z + "}", B}}var d = function (a, b) {return "string" == typeof b ? q(b, {filename: a}) : g(a, b)};d.version = "3.0.0", d.config = function (a, b) {e[a] = b};var e = d.defaults = {openTag: "<%", closeTag: "%>", escape: !0, cache: !0, compress: !1, parser: null},f = d.cache = {};d.render = function (a, b) {return q(a, b)};var g = d.renderFile = function (a, b) {var c = d.get(a) || p({filename: a, name: "Render Error", message: "Template not found"});return b ? c(b) : c};d.get = function (a) {var b;if (f[a]) b = f[a]; else if ("object" == typeof document) {var c = document.getElementById(a);if (c) {var d = (c.value || c.innerHTML).replace(/^\s*|\s*$/g, "");b = q(d, {filename: a})}}return b};var h = function (a, b) {return "string" != typeof a && (b = typeof a, "number" === b ? a += "" : a = "function" === b ? h(a.call(a)) : ""), a}, i = {"<": "<", ">": ">", '"': """, "'": "'", "&": "&"}, j = function (a) {return i[a]}, k = function (a) {return h(a).replace(/&(?![\w#]+;)|[<>"']/g, j)}, l = Array.isArray || function (a) {return "[object Array]" === {}.toString.call(a)}, m = function (a, b) {var c, d;if (l(a)) for (c = 0, d = a.length; d > c; c++) b.call(a, a[c], c, a); else for (c in a) b.call(a, a[c], c)}, n = d.utils = {$helpers: {}, $include: g, $string: h, $escape: k, $each: m};d.helper = function (a, b) {o[a] = b};var o = d.helpers = n.$helpers;d.onerror = function (a) {var b = "Template Error\n\n";for (var c in a) b += "<" + c + ">\n" + a[c] + "\n\n";"object" == typeof console && console.error(b)};var p = function (a) {return d.onerror(a), function () {return "{Template Error}"}}, q = d.compile = function (a, b) {function d(c) {try {return new i(c, h) + ""} catch (d) {return b.debug ? p(d)() : (b.debug = !0, q(a, b)(c))}}b = b || {};for (var g in e) void 0 === b[g] && (b[g] = e[g]);var h = b.filename;try {var i = c(a, b)} catch (j) {return j.filename = h || "anonymous", j.name = "Syntax Error", p(j)}return d.prototype = i.prototype, d.toString = function () {return i.toString()}, h && b.cache && (f[h] = d), d}, r = n.$each,s = "break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u = /[^\w$]+/g, v = new RegExp(["\\b" + s.replace(/,/g, "\\b|\\b") + "\\b"].join("|"), "g"),w = /^\d[^,]*|,\d[^,]*/g, x = /^,+|,+$/g;"function" == typeof define ? define(function () {return d}) : "undefined" != typeof exports ? module.exports = d : this.template = d
}();

三、总结

我们页面封装页面及数据的时候大部分时间其实还是页面不用动 然后数据封装用循环遍历 但是你顶不住需求怪呀 但是拼接的话也不是很难 就拿过来页面append()下就可以了 学到三连哈~

jq动态拼接html页面及数据相关推荐

  1. Python实训day12am【网络爬虫大作业简略解析:动态生成html页面、数据写入Excel】

    Python实训-15天-博客汇总表 目录 1.HTML页面设计 2.生成每个城市的HTML页面 2.1.HTML页面代码(weatherTemplate.html) 2.2.实例代码-动态生成htm ...

  2. 动态给H5页面绑定数据,基本万能无错误!

    此为原创,转载请注明出处! /* * 共通用绑定页面数据用方法 * * @param bingData 需要绑定的数据 * * @return 无 * */ function commonBindDa ...

  3. 七十、Vue城市页面Ajax动态渲染和兄弟组件数据传递

    2020/10/29. 周四.今天又是奋斗的一天. @Author:Runsen 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  4. Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

    [Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...

  5. 爬取在行平台数据(1)——动态加载页面分析

    谈及动态加载页面,最先想到的一种情形是这样的--"加载更多": 面对这种动态加载的页面,要想获得更多的数据,往往需要借助开发者工具进行辅助分析.回归正题,本文依次介绍爬取对象.分析 ...

  6. ajax异步获取数据后动态向表格中添加数据的页面

    因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 [html] view plaincopyp ...

  7. 【看板】ajax动态获取后台传来json数据,加载到页面表格中

    ajax动态获取后台传来json数据,加载到页面表格中 摘要 1.WebApi 2.看板HTML 3.ajax获取后台传来的数据:在这里要注意声明提升,所以需要在for循环外var str1 = &q ...

  8. php如何拼接变量名,php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符...

    php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符 方式一:使用花括号,前缀部分不需要用单引号 $nums10 = 100; $xxx*${bcount.$nums10}['m54'] ...

  9. Asp.net动态生成html页面

    作者:网际浪子专栏(曾用名littlehb)  http://blog.csdn.net/littlehb/ 适用于:Microsoft ASP.NET 摘要:asp.net动态生成html页面,适用 ...

  10. python的flask框架显示柱状图_使用Python的Flask框架,结合Highchart,动态渲染图表(Ajax 请求数据接口)...

    参考链接:https://www.highcharts.com.cn/docs/ajax 参考链接中的示例代码是使用php写的,这里改用python写. 需要注意的地方: 1.接口返回的数据格式,这个 ...

最新文章

  1. 从0梳理1场数据挖掘赛事!
  2. Leetcode-笔记-22.括号生成--递归
  3. 张宏江对话清华“智班”:我想看到更多极客
  4. 图灵2010.09书讯
  5. 选择学习“下一个”程序语言
  6. Memcached - In Action
  7. 前端学习(1671):前端系列实战课程之透明度运动效果实现思路
  8. 瞎学的几天 ----java多线程和线程池
  9. oracle DML错误日志(笔记)
  10. linux源代码存放在哪个目录_入门Linux,从了解Linux文件系统的目录结构开始
  11. android: ListView设置emptyView 误区
  12. 《Nmap渗透测试指南》—第2章2.8节ICMP Ping Types扫描
  13. o'Reill的SVG精髓(第二版)学习笔记——第四章
  14. 算法:指定位置翻转链表 rotate-list
  15. win10忘记密码_win10带有密码压缩包的破解方法
  16. python机器学习教程_从零开始掌握Python机器学习:十四步教程
  17. 硬件仿真加速器(emulator)
  18. 用python编程解决鸡兔同笼问题
  19. 解剖 Facebook 底层
  20. 商城前端模板_如何理解微信小程序和微商城,微信公众号以及APP之间的关系?一张图看懂了!...

热门文章

  1. TrackMouseEvent 与_TrackMouseEvent
  2. 【坐在马桶上看算法】算法3:最常用的排序——快速排序
  3. 2017上半年软考 第十二章 重要知识点
  4. 简单实用的 Ubuntu 快捷键
  5. Js打印object对象两种方法
  6. ubuntu系统VNC服务器安装配置
  7. char,varchar,nvarchar以及datetime和smalldatetime的区别
  8. linux下main函数的返回值问题
  9. Udp通信 暑期学习笔记(三)
  10. 解决排列组合问题的通用算法(转)