per avvolgere un elemento con un commento, o più specificamente per sostituire un elemento con un nodo di commento con l'HTML di quell'elemento:
my_element_jq = $('.my_element');
comment = document.createComment(my_element_jq.get(0).outerHTML);
my_element_jq.replaceWith(comment);
Per tornare indietro:
$(comment).replaceWith(comment.nodeValue);
Se non si ha il riferimento al nodo commento allora avete bisogno di attraversare l'albero DOM e verificare nodeType
di ogni nodo. Se il suo valore è 8, allora è un commento.
Ad esempio:
<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);
}
});
Sarebbe utile sapere che cosa il vostro caso d'uso è. Non riesco a pensare a molte situazioni in cui questa è la cosa giusta da fare, piuttosto che nascondere l'elemento o rimuoverlo dal DOM e aggiungerlo in un secondo momento. – SamStephens
Non ho mai visto qualcosa del genere :) considera di nasconderlo, il risultato è lo stesso. Nascosto dallo schermo, ma visibile sul codice sorgente, stesso risultato. – gpasci
Non riesco a nasconderlo, perché uso qualche plugin jQuery, simile alla muratura, che lo sta rimuovendo. – George