使用template
1.放置html片段模板
<script id="tpl" type="text/html">
<p>$title</p><table id="datatable"></table>
<div class="descript"><p class="descripttitle"></p></div>
</script>
2.放置html片段模板
<template id="tpl">
<p>$title</p><table id="datatable"></table>
<div class="descript"><p class="descripttitle"></p></div>
</template>
js取出模板内容
// 得到这个模板元素对象
let tpldom = document.querySelector('#tpl'); // 根据ID取出模板中的table元素
// 注意content这个属性,取templete内容需要使用这个只读属性
let tab = tpldom.content.querySelectorAll('#datatable'); // 然后可以操作这个table,比如向其中插入数据,然后显示在DOM中
用JQ取出模板内容
var html=$('#tpl').html();// 适用第二种,第一种取不到内容.
var html=$('#tpl').text();// 都适用
var html=tpl.innerHTML;//
var html=tpl.innerText;//
如此,取出的内容都是字符串.转成JQ对象
var htmlJQ=$(html); // 是一堆DOM的集合,然后用选择器找里面的元素
htmlJQ.filter('p').eq(0); // 取直接子元素的第一个p <p>$title</p>
htmlJQ.find('.descripttitle').eq(0); // 取后代子元素的第一个p <p class="descripttitle"></p>
使用template时,用content取内容
var htmldom=$('#tpl').prop('content');// 这取出的是DOM片段,不再是字符串
var htmldom=tpl.content;
htmldom.querySelector('p');// 取出第一个p <p>$title</p>
如果使用JQ,与取字符串后转成JQ对象有区别
var htmlJQ=$(htmldom); // 这里面是<template id="tpl">的JQ对象,不再是它里面的DOM集合
htmlJQ.children('p').eq(0); // 取直接子元素的第一个p <p>$title</p>
htmlJQ.children().find('.descripttitle').eq(0); // 取后代子元素的第一个p <p class="descripttitle"></p>
这里有个疑惑未解,取DOM片段转JQ后,里面是<template id="tpl">对象,如果使用htmlJQ.find()这个方法找它的后代元素,结果是空.使用上面的children则能找到.
3.动态生成模板元素
如果需要将已有的DOM文档暂时放到某个地方,可以使用这个模板元素.
例如页面上有个<div id="eName" class="name">...</div>,需要将它取出暂放到templete.
$('body').append('<templete id="tpl_eName"></templete>');// 建一个模板元素
$('#tpl_eName').append($('#eName'));// 向其中添加内容.
当动态向templete元素中添加内容时,使用JQ选择器可以选中模板内的元素.(直接写在文档中的模板元素则不会被选中).FF的F12工具看不到直接写的,但能看到动态生成的.谷歌工具都能看到.
如果只是希望将文档暂时放到一个"缓存"中,并且不希望被选中,那么就不能使用暂放到templete元素.可以使用document.createDocumentFragment()这个方法,建立文档片断,将需要缓存的DOM放到里面.
一般情况下,都是直接写好模板元素放在HTML中的,取用的时候都是将其中的内容复制一份使用,而不会直接使用模板中的内容
使用template的更多相关文章
- 为.NET Core项目定义Item Template
作为这个星球上最强大的IDE,Visual Studio不仅仅提供了很多原生的特性,更重要的是它是一个可定制的IDE,比如自定义Project Template和Item Template就是一个非常 ...
- jQuery.template.js 简单使用
之前看了一篇文章<我们为什么要尝试前后端分离>,深有同感,并有了下面的评论: 我最近也和前端同事在讨论这个问题,比如有时候前端写好页面给后端了,然后后端把这些页面拆分成很多的 views, ...
- 2000条你应知的WPF小姿势 基础篇<69-73 WPF Freeze机制和Template>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...
- tornado template
若果使用Tornado进行web开发可能会用到模板功能,页面继承,嵌套... 多页应用模板的处理多半依赖后端(SPA就可以动态加载局部视图),就算是RESTfull的API设计,也不妨碍同时提供部分模 ...
- 设计模式(九): 从醋溜土豆丝和清炒苦瓜中来学习"模板方法模式"(Template Method Pattern)
今天是五.四青年节,祝大家节日快乐.看着今天这标题就有食欲,夏天到了,醋溜土豆丝和清炒苦瓜适合夏天吃,好吃不上火.这两道菜大部分人都应该吃过,特别是醋溜土豆丝,作为“鲁菜”的代表作之一更是为大众所熟知 ...
- C++泛型编程:template模板
泛型编程就是以独立于任何特定类型的方式编写代码,而模板是C++泛型编程的基础. 所谓template,是针对“一个或多个尚未明确的类型”所编写的函数或类. 使用template时,可以显示的或隐示的将 ...
- 新手入门Underscore.js 中文(template)
Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了javaScript的编程.MVC框架Backbone.js就将这个库作为自 ...
- knockoutjs如何动态加载外部的file作为component中的template数据源
玩过knockoutjs的都知道,有一个强大的功能叫做component,而这个component有个牛逼的地方就是拥有自己的viewmodel和template, 比如下面这样: ko.compon ...
- JavaScript模板引擎artTemplate.js——template.helper()方法
上一篇文章我们已经讲到了helper()方法,但是上面的例子只是一个参数的写法,如果是多个参数,写法就另有区别了. <div id="user_info"></d ...
- linux下, 再次遇到使用thinkphp的模板标签时,报错used undefined function \Think\Template\simplexml_load_string() 是因为没有安装 php-xml包
linux下, 使用thinkphp的模板标签,如 eq, gt, volist defined, present , empty等 标签时, 报错: used undefined function ...
随机推荐
- node学习: package.json
package.json 定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据) 1.创建 package.json npm init npm init –yes 2.p ...
- Redis教程(Windows)
安装 1)下载redis压缩包并 , 推荐地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平 ...
- java依赖的斗争:依赖倒置、控制反转和依赖注入
控制反转(Inversion Of Controller)的一个著名的同义原则是由Robert C.Martin提出的依赖倒置原则(Dependency Inversion Principle),它的 ...
- [转帖]ulimit、limits.conf、sysctl和proc文件系统
ulimit.limits.conf.sysctl和proc文件系统 来源:https://blog.csdn.net/weixin_33918114/article/details/86882372 ...
- HDU 5782 Cycle —— KMP
题目:Cycle 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5782 题意:给出两个字符串,判断两个字符串的每一个前缀是否循环相等(比如abc 和 ca ...
- uwsgi加nginx部署django restframework前后端分离项目
一.uwsgi和nginx简介 1.uwsgi(摘抄于百度百科): uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与 ...
- DAY02、正式介绍python
一.编程语言介绍(***) 1.1.机器语言:直接用计算机能理解的二进制指令编写程序,直接控制硬件 1.2.汇编语言:用英文标签取代二进制指令编写程序,本质也是直接控制硬件 1.3.高级语言:用人类能 ...
- LodopFuncs.js和CLodopFuncs.js区别和联系
所在位置:LodopFuncs.js可以在官网下载中心综合版里下载到.CLodopfuncs.js在C-Lodop服务缓存中,C-Lodop启动的时候才能访问到. 需不需要下载放置到项目里:(客户端本 ...
- How to enable usb on vbox
Device-->Install Guest Addition Shared Folders Settings-->Advanced-->Shared Clipboard--> ...
- Web API 2 使用SSL
在Server上启用SSL 稍后我会想在IIS 7 上配置SSL,现在先往下看. 本地测试,您可以启用SSL的IIS Express Visual Studio.在属性窗口中,启用SSL设置为True ...