2013-03-21 15 views
6

ich nach einem Weg suchen zu wickeln, mit jQuery, ein Element in einen Kommentar, wie:jQuery Kommentar/uncomment <! - Element ->

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

und auch eine Möglichkeit, die Kommentare zu entfernen .

Ist das möglich? weil ich nichts zusammenhängendes finden konnte.

+4

Es wäre nützlich zu wissen, was Ihr Anwendungsfall ist. Ich kann mir nicht viele Situationen vorstellen, in denen dies das Richtige ist, anstatt entweder das Element zu verstecken oder es aus dem DOM zu entfernen und es später wieder hinzuzufügen. – SamStephens

+0

Ich habe noch nie so etwas gesehen :) bedenken Sie, es zu verstecken, das Ergebnis ist das gleiche. Versteckt vom Bildschirm, aber sichtbar im Quellcode, gleiches Ergebnis. – gpasci

+0

Ich kann es nicht verstecken, weil ich ein jquery plugin benutze, ähnlich dem Maurerwerk, das es wieder enthüllt. – George

Antwort

15

ein Element mit Kommentar zu wickeln, oder genauer gesagt ersetzen ein Element mit einem Kommentarknoten, der den HTML-Code dieses Elements aufweist:

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

Um zurückzuschalten:

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

Wenn Sie den Verweis auf den Kommentarknoten nicht haben, dann müssen Sie den DOM-Baum zu durchlaufen und überprüfen nodeType jedes Knotens. Wenn der Wert 8 ist, ist es ein Kommentar.

Zum Beispiel:

<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

Das funktioniert völlig! Vielen Dank! – LittleTreeX

-2

Zum Einwickeln?

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

Nicht sicher, wie erfolgreich Sie die Kommentare finden würden, sobald sie verpackt wurden. Eine Textsuche für das body-Element mit regulären Ausdrücken ist eine Option.

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

+3

dies funktioniert nicht: http://jsfiddle.net/zjjBE/Es behandelt die erste als eine offene und schließen, und die zweite als eine Zeichenfolge. –

+0

Fair genug. Stoopid Frage sowieso;) – LiverpoolsNumber9

2

Sie das Element Kommentar können, indem Sie aus den folgenden:

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

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

+0

Danke, aber es ist nicht möglich, es auskommentieren, oder? – George

+1

Immer noch, ich werde Sie wissen lassen :) – Dom

+1

this.outerHTML sollte genug sein, nicht brauchen $() –