Aby owinąć element z komentarzem, a dokładniej do zastąpienia element z węzłem komentarza z kodem tego elementu:
my_element_jq = $('.my_element');
comment = document.createComment(my_element_jq.get(0).outerHTML);
my_element_jq.replaceWith(comment);
Aby włączyć go z powrotem:
$(comment).replaceWith(comment.nodeValue);
Jeśli nie mają odniesienia do węzła komentarz musisz przemierzać drzewa DOM i sprawdzić nodeType
każdego węzła. Jeśli ma wartość 8, jest komentarzem.
Na przykład:
<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);
}
});
Byłoby warto wiedzieć, co twój przypadek użycia jest. Nie mogę wymyślić wielu sytuacji, w których jest to słuszne, zamiast ukrywać element lub usunąć go z DOM i dodać go później. – SamStephens
Nigdy czegoś takiego nie widziałem :) rozważ to ukrycie, wynik jest taki sam. Ukryty z ekranu, ale widoczny na kodzie źródłowym, ten sam wynik. – gpasci
Nie mogę tego ukryć, ponieważ używam jakiejś wtyczki jquery podobnej do ściany, która ją odkrywa. – George