Javascript 为什么jQuery没有将这个html字符串转换成jQuery对象?
我有一个模板字符串,需要将其转换为jQuery对象,以便解析它并填写数据Javascript 为什么jQuery没有将这个html字符串转换成jQuery对象?,javascript,jquery,Javascript,Jquery,我有一个模板字符串,需要将其转换为jQuery对象,以便解析它并填写数据 $(function(){ var template = '<h3>Details</h3>' + '<ul>' + '<li>Submitted: <span class="submittedTime"></span></li>' + '<li>Submitted by: <span cla
$(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);
});
$(函数(){
var模板='Details'+
“”+
“- 已提交:
”+
“- 提交人:
”+
“- 联系信息”+
“
”+
“- 名称:
”+
“- 名称:
”+
“
”+
“ ”;
var t=$(模板);
});
当我尝试对它们执行jQuery操作(例如.find()
)时,它失败了
你知道我做错了什么吗?基于:
为了确保跨平台兼容性,代码段必须格式良好。可以包含其他元素的标记应与结束标记配对:
因此,您可能需要关闭该
而且
如果HTML比没有属性的单个标记更复杂,[…]
元素的实际创建是
由浏览器的.innerHTML机制处理。在大多数情况下,jQuery
创建新元素并设置
元素添加到传入的HTML代码段
在不同的浏览器上可能会有所不同。我认为事实上是这样,根据。尝试对包含
元素的HTML文档运行此脚本:
$(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>" +
"</ul>";
var t = $(template);
//console.log(t);
$(t).appendTo(".test");
});
$(函数(){
变量模板=
“详情”+
“”+
“- 已提交:
”+
“- 提交人:
”+
“- 联系信息”+
“
”+
“- 名称:
”+
“- 名称:
”+
“
”+
“ ”+
“
”;
var t=$(模板);
//控制台日志(t);
$(t).附于(“.test”);
});
请参阅以获取演示。您需要将代码片段包装在div元素中,并关闭外部的
ul
标记。如果运行下面的代码段,jQuery将正确输出HTML。我已将您的模板转换为多行语句,以便于阅读
a=$(函数(){
变量模板=`
细节
- 提交:
- 提交人:
-
联系方式
- 姓名:
- 姓名:
`;
var t=$(模板);
document.write(t.html())
});
a()
不确定这是否是原因,但您没有先关闭您的ul
。这可能最终导致解析问题我无法重现您描述的问题--您如何测试这个问题?调用find()
时,您使用的确切代码是什么?您希望得到什么结果?”t
继承了原型jQuery方法”-这是因为它是一个jQuery对象。jQuery对象包含一个普通元素数组。可能重复的问题是什么?使用.find()时会出现什么错误?您没有
标记无法重现该问题不是答案。如果不能,请留下评论。@Jaco我不知道多行字符串。我的天啊,你刚才帮我省了这么多力气!!你在小提琴上所做的与上面的代码不匹配。打得好。但是,这两个代码段都可以工作,它们做的事情是相同的。