JQuery объект из полного документа HTML - PullRequest
2 голосов
/ 11 ноября 2010

Можно ли проанализировать полный HTML-документ как полный объект jQuery?Когда я пытаюсь, например,

var $tmp = $("<html><head><title>title</title></head><body><p id='test'>test</p></body></html>");
console.log($tmp);

, я получаю:

[+] [title, p#test] []

, то есть массив, объединяющий всех детей головы со всеми телами.Разве невозможно сохранить структуру, включая элементы html, head и body?

Ответы [ 3 ]

1 голос
/ 23 декабря 2010

jquery удаляет html и body, поскольку в документе может быть только один html и body.Ответ Брайана - самый близкий, который вы можете получить, но только в браузере, отличном от IE, поскольку IE не анализирует не HTML-теги.

Например:

var test = "<test>This is it</test>";
alert($(test).html());  // display This is it in non IE browser (working in 8-9?).

РЕДАКТИРОВАТЬ: как насчет замены HTML иbody с div class = html / body?

var test = "<html><body><div>this is a test</div></body></html>";
test = test.replace(/(\/body|\/html)/i, "\/div")
           .replace(/html/i, "div class='html'")
           .replace(/body/i, "div class='body'");
console.log($(test));
0 голосов
/ 11 ноября 2010

Хаком было бы заменить строку «html» на что-то, отличное от слова «html».

var tmp = '<html><head><title>title</title></head><body><p id="test">test</p></body></html>';
tmp = tmp.replace(/html/g, 'html1');
console.log($(tmp));

Я не уверен, что мне действительно нравится эта идея, хотя ...

0 голосов
/ 11 ноября 2010

Я думаю, что jQuery использует нативный браузер innerHTML для создания элементов в этой ситуации.Таким образом, некоторые браузеры позволяют это, другие нет.Я думаю, что он будет работать в Firefox, но не в IE.

Возможно, вы могли бы попробовать соединить его вместе, используя родной document.createElement().Не уверен, что это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...