在页面中的多个位置嵌入一次声明的html内容
Embed once declared html content at muliple places within a page
我希望在许多地方使用/嵌入html内容(在本例中为列表<ul>
),但在一个页面中只声明一次。
例如,考虑内容:
<ul>
<li>A</li>
<li>B</li>
<li>...</li>
<li>X</li>
</ul>
现在,这些内容需要在许多地方使用,如以下内容:
用途1:
<div class='left'>
<ul id='listA'>
<li>A</li>
<li>B</li>
<li>...</li>
<li>X</li>
</ul>
</div
用途2:
<div class='right'>
<ul id="listX">
<li>A</li>
<li>B</li>
<li>...</li>
<li>X</li>
</ul>
</div>
我确信这可以在服务器端完成,也可以通过客户端的Ajax调用完成,但目标是优化/减少每个页面请求发送的html内容(数据字节)。因此,如果该特定内容出现在页面的n
位置,则必须只发送一次,然后在那里操作到所有n
不同的位置。因此,在服务器端这样做是没有意义的,Ajax将增加传输过载,因为这是一个单独的调用。
我认为html/css中没有任何内容可以做到这一点,甚至iframe
也不能用于此目的。但是我确信javascript/jQuery可以做到。怎么做?
-
我真的建议你看看Handlebars(js框架)。简而言之,它是一个js模板框架。http://handlebarsjs.com/
-
在这种情况下,我建议您使用requirejs来用html片段定义您的模块,然后无论何时需要使用它,您都可以要求它并将模板编译成您想要的。
-
您还可以使用jquery或其他js-lib来更改html元素的属性,正如Philip Walton所说。$("ul").eq(0).removeClass("right").addClass("left")
如果HTML已经在页面上的某个地方,您可以将其复制到jQuery中,更改需要更改的内容,然后将其插入其他地方。
例如,如果你的页面上只有<ul>
,你可以这样做:
var originalUL = $("ul");
$("body").append($('<div class="left" />').append(originalUL.clone().attr('id', 'listA')));
$("body").append($('<div class="right" />').append(originalUL.clone().attr('id', 'listB')));
以下是一个示例:http://jsfiddle.net/uU7cV/
然而,如果你要做很多工作,并且每个实例的更改都很复杂,我会考虑使用Javascript模板系统或像Backbone.js这样的Javascript MVC框架http://documentcloud.github.com/backbone/
我能看到的最好的选项是使用javascript。您可以使用JQuery来简化语法。只需在一个变量中定义这个可重用标记,并通过设置left
和right
div的innerHtml将其插入到文档就绪事件的各个位置。
$(document).ready(function() {
var reusablehtml ="<ul id='nameplaceholder'><li>A</li><li>B</li><li>...</li><li>X</li></ul>";
$("#left").html(reusablehtml.replace("nameplaceholder", "listA"));
$("#right").html(reusablehtml.replace("nameplaceholder", "listX"));
});
- Javascript html每点击一次就会更改url
- 使用Javascript每隔几秒钟更改一次HTML页面中的图像
- 如何加载一个html页面并在其中只需单击一次即可运行函数
- 一次加载HTML对象并多次使用
- HTML画布-使动画一次发生一个,而不是同时发生多个
- Lightswitch HTML 自定义控件仅显示一次
- 在 html 页面上一次播放一个视频
- 反应:仅在单击 html 元素时执行一次操作
- 如何使网页一次只能访问一次?(JS+HTML)
- 一次提交两个 HTML 表单,一个在当前窗口中,一个在新窗口中
- 如何获取单击元素的类值,并使用此值在 jquery 中最后一次出现此类之后放置一段 html 代码
- html 如何从一次计算中获得多个即时结果
- 使用 Javascript/jQuery 一次播放一个 HTML 音频文件
- 每x秒自动刷新一次Html表
- 使我的网站只显示一次HTML
- 如何在特定的屏幕分辨率范围发生时追加一次html元素
- 在同一窗口中只打开一次.html页面.文件在本地运行
- 只需使用JavaScript重新加载一次HTML页面
- 如何自动刷新一次HTML页面
- 为后端和前端视图(PHP,Backbone)定义一次HTML