# jQuery.parseHTML()

## jQuery.parseHTML ( data, context, keepScripts ) Returns: Array version added: 1.8

- data
  Type: String
  HTML string to be parsed

- context
  Type: Element
  Document element to serve as the context in which the HTML fragment will be created

- keepScripts
  Type: Boolean
  A Boolean indicating whether to include scripts passed in the HTML string

Description: Parses a string into an array of DOM nodes.

`jQuery.parseHTML` uses a native DOM element creation function to convert the string to a set of DOM elements, which can then be inserted into the document.

By default, the `context` is the current `document` if not specified or given as `null` or `undefined`. If the HTML was to be used in another document such as an iframe, that frame's document could be used.

## Security Considerations

Most jQuery APIs that accept HTML strings will run scripts that are included in the HTML. `jQuery.parseHTML` does not run script in the parsed HTML unless `keepScripts` is explicitly `true`. However, it is still possible in most environments to execute script indirectly, for example via the `<img onerror>` attribute. The caller should be aware of this and guard against it by cleaning or escaping any untrusted inputs from sources such as the URL or cookies. For future compatibility, callers should not depend on the ability to run any script content when `keepScripts` is unspecified or `false`.

## Examples:

#### Example: Create an array of Dom nodes using an HTML string and insert it into a div.

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>css demo</title>

      <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    </head>
    <body>

    <div id="log">
      <h3>Content:</h3>
    </div>

    <script>

    var $log = $( "#log" ),
      str = "hello, <b>my name is</b> jQuery.",
      html = $.parseHTML( str ),
      nodeNames = [];

    // Append the parsed HTML
    $log.append( html );

    // Gather the parsed HTML's node names
    $.each( html, function( i, el ) {
      nodeNames[ i ] = "<li>" + el.nodeName + "</li>";
    });

    // Insert the node names
    $log.append( "<h3>Node Names:</h3>" );
    $( "<ol></ol>" )
      .append( nodeNames.join( "" ) )
      .appendTo( $log );

    </script>

    </body>
    </html>

#### Demo: