2012-01-05 2 views
0

У меня есть эта HTML-страница, и я хочу создать метод jQuery, который собирает содержимое HTML на другой странице.jQuery: получить HTML внутри определенного тега

Например, я хочу, чтобы получить содержимое HTML между тегами, включая дочерние теги, атрибуты, текст ..

я придумал что-то вроде:

<script> 
var page; 
$(document).ready(function() { 

$.ajax({ 
     type : "GET", 
    url : "template.html", 
    dataType : "html", 
    success : function(html) { 
    page = $(html).find('body').html(); 
      //do something 

       } 
      }); 
     }); 

    </script> 

но это Безразлично Не трюк. любая идея? Спасибо.

+0

Вы хотите создать другой файл html? – Dau

+0

Что значит «* это не трюк *»? Выполняется ли запрос ajax успешно? переменная 'html' заполняется тем, что вы ожидаете? .. что именно идет не так? –

+0

@Hemant: Мне нужно извлечь html, обработать его и отобразить на текущей странице. – Lorenzo

ответ

4

Вы можете использовать функцию загрузки JQuery.

$('#result').load('ajax/test.html #container'); 

Эта функция загружает HTML из DIV с идентификатором container со страницы ajax/test.html и помещает HTML в DIV с идентификатором result.

источник: http://api.jquery.com/load/

+0

, это то, что я искал, спасибо Матье. – Lorenzo

0

Проблема заключается в том, что Jquery не разобрать всю html страницы как строки ..

При переходе в сложном HTML, некоторые браузеры не могут генерировать DOM, который точно повторяет HTML источник предоставлен. Как уже упоминалось, мы используем свойство браузера .innerHTML для анализа прошедшего HTML и вставки его в текущий документ. В ходе этого процесса, некоторые браузеры отфильтровать определенные элементы, такие как <html>, <title> или <head> элементов. В результате вставленные элементы могут не соответствовать исходной переданной строке.

Так что вам нужно, чтобы обойти это ограничение ..

работы вокруг, чтобы вручную добавить возвращаемый HTML в HTML-элемент.

success : function(html){  
      var ndoc = document.createElement('html'); 
      ndoc.innerHTML = html; 
      page = $('body', ndoc); 
      console.log(page); 
      } 
+0

Хмм, мне удается извлечь этот HTML-код таким образом, но не показывать его с помощью javascript-модификации .innerHTML. Может быть, это потому, что страница уже сделана? – Lorenzo

+0

@Lorenzo, не уверен, что вы имеете в виду .. переменная 'page' будет содержать тег body body результата ajax в памяти как объект jQuert .. (* console.log предназначен для отладки и должен быть удален *) –

+0

Я имею в виду, что если я попытаюсь вызвать функцию javascript, передающую переменную страницы, и в этой функции я пытаюсь вставить собранный HTML в текущий HTML, который у меня нет, а если я использую $ ('# result') .load ('ajax/test.html #container'); Я вижу фактический HTML – Lorenzo

Смежные вопросы