Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么jQuery没有将这个html字符串转换成jQuery对象?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么jQuery没有将这个html字符串转换成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

我有一个模板字符串,需要将其转换为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);

});
$(函数(){
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我不知道多行字符串。我的天啊,你刚才帮我省了这么多力气!!你在小提琴上所做的与上面的代码不匹配。打得好。但是,这两个代码段都可以工作,它们做的事情是相同的。