jQuery的注释/取消注释<! - 元素 - >

问题描述:

我正在寻找一种方式来包装,用jQuery,元素转换为注释,如:jQuery的注释/取消注释<! - 元素 - >

<!-- 
<div class="my_element"></div> 
--> 

,也是一个办法删除评论。

这可能吗?因为我找不到任何相关的东西。

+4

这将会是知道你的使用情况是什么有用。我想不到在很多情况下这是正确的做法,而不是隐藏元素,或者从DOM中删除它,并在稍后添加它。 – SamStephens 2013-03-21 16:59:15

+0

我从来没有见过这样的东西:)考虑隐藏它,结果是一样的。从屏幕隐藏,但在源代码中可见,结果相同。 – gpasci 2013-03-21 17:02:26

+0

我无法隐藏它,因为我使用了一些类似于砌体的jquery插件,它不会隐藏它。 – George 2013-03-21 17:03:48

要使用注释包裹的元素,或者更具体地说,以取代具有该元素的HTML的评论节点的元素:

my_element_jq = $('.my_element'); 
comment = document.createComment(my_element_jq.get(0).outerHTML); 
my_element_jq.replaceWith(comment); 

要切换回:

$(comment).replaceWith(comment.nodeValue); 

如果你不具备参考注释节点,那么你需要遍历DOM树和检查每个节点的nodeType。如果它的值是8,那么它是一个评论。

例如:

<div id="foo"> 
    <div>bar</div> 
    <!-- <div>hello world!</div> --> 
    <div>bar</div> 
</div> 

的JavaScript:

// .contents() returns the children of each element in the set of matched elements, 
// including text and comment nodes. 
$("#foo").contents().each(function(index, node) { 
    if (node.nodeType == 8) { 
     // node is a comment 
     $(node).replaceWith(node.nodeValue); 
    } 
}); 
+0

这完全有效!非常感谢! – LittleTreeX 2013-08-07 10:03:23

包装?

function wrap(jQueryElement){ 
    jQueryElement.before("<!--").after("-->"); 
} 

不知道你会发现一旦包装的评论有多成功。使用正则表达式对正文元素进行文本搜索是一种选择。

或者这 - is it possible to remove an html comment from dom using jquery

+3

这不起作用:http://jsfiddle.net/zjjBE /它将第一个视为开放和关闭,第二个视为一个字符串。 – 2013-03-21 17:12:49

+0

够公平的。无论如何,Stoopid问题;) – LiverpoolsNumber9 2013-03-22 12:12:15

你可以做评论的元素了以下工作:

function comment(element){ 
    element.wrap(function() { 
     return '<!--' + this.outerHTML + '"-->'; 
    }); 
} 

DEMO: http://jsfiddle.net/dirtyd77/THBpD/27/

+0

谢谢,但它是不可能取消注释它,对吧? – George 2013-03-21 18:22:50

+1

还在研究它,我会让你知道:) – Dom 2013-03-21 18:25:37

+1

this.outerHTML应该就够了,不需要$() – 2013-03-22 15:08:08