2013-03-21 22 views
6

szukam sposób do zawijania, z jQuery, element w komentarzu, jak:jQuery komentarz/odkomentuj <! - element ->

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

a także sposób, aby usunąć komentarze .

Czy to możliwe? ponieważ nie mogłem znaleźć nic powiązanego.

+4

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

+0

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

+0

Nie mogę tego ukryć, ponieważ używam jakiejś wtyczki jquery podobnej do ściany, która ją odkrywa. – George

Odpowiedz

15

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); 
    } 
}); 
+0

To działa całkowicie! Dzięki wielkie! – LittleTreeX

-2

Do zawijania?

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

Nie jestem pewien, czy udało Ci się znaleźć komentarze, które zostały kiedyś zapakowane. Wyszukiwanie tekstowe na elemencie body za pomocą wyrażeń regularnych jest opcją.

Albo to - is it possible to remove an html comment from dom using jquery

+3

to nie działa: http://jsfiddle.net/zjjBE/traktuje pierwszą jako otwartą i zamkniętą, a drugą jako ciąg. –

+0

Wystarczająco fair. Stoopid pytanie mimo wszystko;) – LiverpoolsNumber9

2

można skomentować element się w następujący sposób:

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

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

+0

Dzięki, ale nie można odkomentować go, prawda? – George

+1

Nadal zaglądam, dam ci znać :) – Dom

+1

this.outerHTML powinno wystarczyć, nie potrzebujesz $() –