这将$('.hello').clone().appendTo('.goodbye');
到
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
结果是一个黑客位,但它在火狐,Chrome和Opera的作品。没有在IE中测试过,没有在这台笔记本电脑上...让我知道如果它有效的IE浏览器,如果你有机会测试。
将这个文档的head
,在script
标签:
function transclude(elementId) {
var clone = document.getElementById(elementId).cloneNode(true),
placeholder;
clone.id = null;
document.write('<br id="__placeholder__">');
placeholder = document.getElementById('__placeholder__');
placeholder.parentNode.insertBefore(clone, placeholder);
placeholder.parentNode.removeChild(placeholder);
return transclude;
}
要transclude元件,使用:
<p id="p1">This is paragraph 1. </p>
<p id="p2">
This is paragraph 2.
</p>
<p id="p3">This is paragraph 3. It should contain paragraphs 1 and 2.
<script>transclude("p1")("p2")</script>
</p>
注:
ID属性被删除来自克隆元素。
只要包含调用transclude
的脚本运行,不等待文档加载,元素就会被转移。由于使用了document.write
,在文档加载完成后这将不起作用。
我们使用虚拟占位符元素,<br>
,防止document.write
,其中已被打开,但不能终止的<p>
后写例如<p>
导致第一标签提前终止的副作用。
换句话说,占位符元素的标记名称应该与任何未终止的外部标记的名称不同,因此它是自行终止的<br>
标记。
阻塞函数返回自身进行链接。
http://jsfiddle.net/bcWjE/1
你可能需要使用JavaScript这一点。 – 2013-03-23 03:31:52
@Tririar我给这个问题添加了JavaScript标签。感谢您指出了这一点。 :) – 2013-03-23 03:33:09
Asuming此代码工作,应该发生重复段落的'id'属性?他们不应该保持不变...他们应该被删除或更改? – 2013-03-23 03:38:11