Если вам нужен весь контент как элементы, вы можете попробовать использовать iframe
.
// create and append new iframe
var iframe = document.createElement('iframe');
document.documentElement.appendChild(iframe);
// set its innerHTML
iframe.contentWindow.document.documentElement.innerHTML = varWithDOM;
// grab the `window`
var win = iframe.contentWindow;
// remove the iframe
document.documentElement.removeChild(iframe);
Демонстрация, которая захватывает head
: http://jsfiddle.net/K6tR2/
оригинальный ответ
Не столько jQuery удаляет его, сколько браузер. Это поведение будет отличаться в разных браузерах.
Одна вещь, которую вы могли бы попробовать, это поместить все это в <div>
, чтобы это стало вашим контекстом ...
$('<div>' + varWithDom + '</div>').find(...)
Теперь не имеет значения, что удалено (если вам действительно не нужно что-то в <head>
), поскольку все это будет потомком внешнего div
.
Если вы этого не хотите, то вам нужно будет выполнить запрос дважды, один раз с .find()
и один раз с .filter()
...
var els = $( varWithDom );
var links = els.find( 'a[href]' ).add( els.filter( 'a[href]' ) );