Это давно, но, может быть, вы все еще заинтересованы в этом ..
Внутренняя реализация $(String)
не может создать объект jQuery, содержащий теги head
или body
. Он будет просто игнорировать их и перемещать все элементы внутри на уровень вверх.
Так что, если ваша строка, например,
<html>
<head>
<meta ...>
</head>
<body>
<div id="a"/>
</body>
</html>
результирующий объект jQuery будет массивом из двух элементов
[<meta ...>, <div id="a" />]
чтобы получить body
-подобный объект jQuery, обрежьте все, кроме содержимого тела, прежде чем передавать его в jQuery:
body = '<div id="body-mock">' + html.replace(/^[\s\S]*<body.*?>|<\/body>[\s\S]*$/ig, '') + '</div>';
var $body = $(body);
теперь все работает как положено .. например
$body.find('#a')
Надеюсь, это поможет ..