1

假设您有一个来自服务器的注释 html 结构(它被注释以提高渲染速度,如 FB)。之后,我们应该删除我们的内容并允许浏览器呈现 html。最快的方法是什么?

4

6 回答 6

3

您可以使用“content()”方法获取所有节点,包括评论:轻且无插件!

然后你应该使用“filter()”方法过滤集合

$container
    .contents()
    .filter(function(){ return this.nodeType == 8; })
    .remove(); // replaceWith()  etc.
于 2012-09-18T08:20:42.587 回答
3

可能使用jquery 取消注释插件

于 2012-09-18T07:53:55.380 回答
2
功能_removeComments(节点){
    if (!node || !node.parentNode) 返回;

    if (node.nodeType == 8) {
        node.parentNode.removeChild(node);
        返回;
    }

    for (var c = node.firstChild; c; ) {
        var n = c.nextSibling;
        _removeComments(c);
        c = n;
    }
}

功能删除评论(元素){
    element.each(函数() {
        _removeComments(这个);
    });
}

于 2014-04-23T23:06:36.640 回答
1

得到注释的 DOM 然后做一个replace()

  var dom =  $.trim($('#domcontainer').html()).replace('<!--','').replace('-->','');
于 2012-09-18T07:58:26.770 回答
1
$(stringHtml).comments().remove();

...使用 jquery-comments 插件:

http://www.bennadel.com/blog/1563-jquery-comments-plug-in-to-access-html-comments-for-dom-templating.htm

于 2012-09-18T07:56:23.817 回答
0

试试这个方法。为元素节点提供带有注释的 HTML,这将删除注释块并显示 HTML。

function uncommentNode(node) {
    var nodestr = node.innerHTML;
    var noderevealHTML =  nodestr.replace(/<!--/ig, '').replace(/-->/ig, ''); // Update expressions here.
    node.innerHTML = noderevealHTML;
}

如果您的注释 HTML 在注释开始/结束标记中有三个或更多破折号 (<-- / <---),请务必更新上述函数中的 replace() 表达式。

这是一个JSFIDDLE以获得更好的解释。

于 2015-04-09T20:09:48.387 回答