jQuery comentar/descomentar <!–elemento–>

Estoy buscando una manera de envolver, con jQuery, un elemento en un comentario, como:

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

y también una manera de eliminar los comentarios.

Es esto posible?

  • Sería útil saber lo que el caso de uso es. No puedo pensar en muchas situaciones donde esto es la cosa correcta a hacer, en lugar de u ocultar el elemento, o la eliminación de la DOM y la adición de nuevo más tarde.
  • Nunca he visto algo como eso 🙂 considere la posibilidad de ocultar, el resultado es el mismo. Ocultos de la pantalla, pero visible en el código fuente, mismo resultado.
  • Yo no puedo ocultar, porque yo uso un plugin de jquery, similar a la masonería, que es mostrar de nuevo.
  • Creo que más fundementally, usted necesita para esconderse de ver con javascript (por ejemplo jQuery.ocultar(el)) – escondiéndose de «origen» es imposible.
  • Esto no es un duplicado de la pregunta que LO que está diciendo es. Este se pregunta acerca quitando los comentarios/comentar como contraposición a la pregunta relacionada, que es sobre la eliminación de los nodos de comentario. También la validez de un caso de uso que he tenido es una manera rápida y fácil de separar y dejar de elementos de vídeo en un JSPA para acelerar el rendimiento en IE 8.
InformationsquelleAutor George | 2013-03-21

4 Kommentare

  1. 20

    Para ajustar un elemento con el comentario, o más específicamente para reemplazar un elemento con un comentario nodo de tener ese elemento HTML:

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

    Para cambiar:

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

    Si usted no tiene la referencia al nodo de comentario, entonces usted necesita para recorrer el árbol DOM y comprobar nodeType de cada nodo. Si su valor es 8, entonces es un comentario.

    Por ejemplo:

    <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);
        }
    });
  2. 3

    Puede comentar el elemento haciendo lo siguiente:

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

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

    • Gracias, pero no es posible comentar, ¿verdad?
    • este.outerHTML debería ser suficiente, no necesitas $()
  3. 2

    Estoy impresed nadie dio la siguiente solución. La siguiente solución requieren de un contenedor. Este contenedor se tienen en el interior, el comentario /sin comentar el código.

    function comment(element) {
        element.html('<!--' + element.html() + '-->')
    }
    
    function uncomment(element) {
        element.html(element.html().substring(4, element.html().length - 3))
    }
    
    function isCommented(element) {
        return element.html().substring(0, 4) == '<!--';
    }

    Ejemplo: https://jsfiddle.net/ConsoleTVs/r6bm5nhz/

  4. -2

    Para envolver?

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

    No está seguro de lo exitosos que sería encontrar los comentarios una vez envuelto, aunque. Una búsqueda de texto en el cuerpo del elemento de la utilización de expresiones regulares es una opción.

    O esta – es posible quitar un comentario html de dom con jquery

    • esto no funciona: jsfiddle.net/zjjBE se trata de la primera como un abrir y cerrar, y el 2º como una cadena.
    • Justo lo suficiente. Stoopid pregunta de todos modos 😉

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea