我有一个模板字符串,我需要变成一个jQuery对象,所以我可以解析它并填写数据。
$(function(){
var template = '<h3>Details</h3>' +
'<ul>' +
'<li>Submitted: <span class="submittedTime"></span></li>' +
'<li>Submitted by: <span class="submitter"></span></li>' +
'<li>Contact Information' +
'<ul>' +
'<li>Name: <span class="contactName"></span></li>' +
'<li>Name: <span class="contactEmail"></span></li>' +
'</ul>' +
'</li>';
var t = $(template);
});
当我尝试对它们执行jQuery操作(例如.find()
)时,它会失败。
你对我做错了什么有任何想法吗?
答案 0 :(得分:0)
我认为实际上是Quinten's comment。尝试针对带有(+VALUE:{2.1 TO *} +VALUE:{2 TO *})
元素的HTML文档运行此脚本:
<div class="test">
请参阅http://jsfiddle.net/5svLfq4r/了解演示。
答案 1 :(得分:0)
您需要将代码段包装在div元素中并关闭外部ul
代码。如果您运行下面的代码段,jQuery将正确输出HTML。我已将您的模板转换为多行语句,以便于阅读
a = $(function() {
var template = `
<div>
<h3>Details</h3>
<ul>
<li>Submitted: <span class="submittedTime"></span></li>
<li>Submitted by: <span class="submitter"></span></li>
<li>
Contact Information
<ul>
<li>Name: <span class="contactName"></span></li>
<li>Name: <span class="contactEmail"></span></li>
</ul>
</li>
</ul>
</div>`;
var t = $(template);
document.write(t.html())
});
a()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 2 :(得分:-1)
基于 documentation :
为确保跨平台兼容性,代码段必须格式正确。可以包含其他元素的标记应与结束标记配对:
所以你可能需要关闭<ul>
。
此外,
如果HTML比没有属性的单个标签更复杂,[..] 元素的实际创建是 由浏览器的.innerHTML机制处理。在大多数情况下,jQuery 创建一个新元素并设置的innerHTML属性 传入的HTML代码段的元素。
在不同的浏览器上可能会有所不同。