Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selecting HTML comments with jQuery

Tags:

html

jquery

Does any one know how to select HTML comment nodes with jQuery?

<html>
<head>
    <title>Check Test</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $("body *").each(function() {
                alert($(this).wrap("<span />").parent().html());
            });
        });
    </script>
</head>
<body>
    <!-- Hello -->  
    <p>
        <label for="thing">Thing Label</label>
        <input id="thing" type="checkbox" />
    </p>

This doesn't pick up the comment.

like image 268
Anthony Johnston Avatar asked Oct 26 '09 08:10

Anthony Johnston


3 Answers

This seems to do something equivalent to what you're looking for:

    $(function() {
        $("body").contents().filter(function(){
            return this.nodeType == 8;
        }).each(function(i, e){
            alert(e.nodeValue);
        });
    });
like image 96
Frank Geueke Avatar answered Sep 23 '22 14:09

Frank Geueke


There's the jQuery comments() plugin which will do that for you. Usage:

var comments = $( "#foo" ).comments();
alert(comments.html());
like image 14
karim79 Avatar answered Sep 21 '22 14:09

karim79


And if you don't want a plugin:

var content = jQuery('body').html();
alert(content.match(/<!--.*?-->/g));

This uses regular expressions. It is set to search for anything enclosed by <!-- and --> while it doesn't matter what's written on the inside.

NOTE: I am not sure however, if jQuery also returns comments. If it does not, this approach does not work.

like image 13
Mike Avatar answered Sep 20 '22 14:09

Mike