首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问嵌套的DocumentFragment

访问嵌套的DocumentFragment
EN

Stack Overflow用户
提问于 2013-06-07 04:33:20
回答 1查看 2.1K关注 0票数 0

我可以在Chrome的控制台中很好地导航这些元素,但我似乎无法使用childNodesfirstChild获得对嵌套DocumentFragment的引用。

下面是jsFiddle中的代码:http://jsfiddle.net/Ge8au/2/

代码如下:

代码语言:javascript
复制
function withoutJquery(html)
{
    var temp = document.createElement("div");
    temp.innerHTML = html;

    var fragment = document.createDocumentFragment();
    var child;

    while (child = temp.firstChild)
    {
        fragment.appendChild(child);
    }

    return fragment.firstChild;
}


function withJquery(html)
{
    var fragment = document.createDocumentFragment();

    fragment.appendChild( jQuery.buildFragment([html],document) );

    return fragment.firstChild;
}


var ajaxHTML = "";
ajaxHTML += "<template>\n";
ajaxHTML += "    <div>asdf</div>\n";
ajaxHTML += "    <div>\n";
ajaxHTML += "        <span>asdf</span>\n";
ajaxHTML += "    </div>\n";
ajaxHTML += "</template>";


// Gives the <template>
console.log( withoutJquery(ajaxHTML) );
console.log( withJquery(ajaxHTML) );

// Where are the <div>'s?
console.log( withoutJquery(ajaxHTML).childNodes.length );
console.log( withJquery(ajaxHTML).childNodes.length );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-07 05:13:27

尝试返回fragment.firstChild.content而不是fragment.firstChild

由于这似乎会因浏览器而略有不同,因此更好的解决方案可能如下所示:

代码语言:javascript
复制
var toReturn = fragment.firstChild;
return (toReturn.content ? toReturn.content : toReturn.childNodes);

对于是否也需要childNodes,浏览器似乎有些困惑--使用上面的代码,您可能可以从console.log()语句中删除childNodes

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16971655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档