Тег BODY исчезает при использовании Jquery.Load () - PullRequest
2 голосов
/ 26 ноября 2009

Я пытаюсь сделать всплывающее окно, похожее на окно, используя jquery и его модальное окно. Сначала я загружаю контент из HTML-файла:

$("#test").load("test.htm");

Затем я загружаю всплывающее окно:

$("#test").dialog("open");

Это работает так, как должно, содержимое test.html вставляется в модальное всплывающее окно. Есть только одна мысль, что это неправильно, и это то, что теги BODY ушли из источника всплывающего окна. Мне нужен тег BODY, потому что я выполняю некоторое форматирование на основе тега BODY.

Кто-нибудь знает, почему jQuery.Load () удаляет тег BODY? И есть ли обходные пути?

Ответы [ 5 ]

1 голос
/ 26 ноября 2009

На странице может быть только один тег body. Если у вас уже есть один на странице, второй будет игнорироваться.

В вашем случае кажется, что браузер игнорирует дублирующееся тело (ничего специфичного для jquery). Вместо того, чтобы использовать тело для стиля, используйте содержащий <div> с идентификатором или классом, который будет сохранен.

1 голос
/ 26 ноября 2009

Возможно, он удаляет тег body, потому что он не разрешен! Каждый документ может иметь только одно тело. Вместо того, чтобы заставлять всех повторять все свои HTML-страницы, jQuery, вероятно, просто захватывает содержимое body для использования при вызове load().

Задумывались ли вы, возможно, обернуть все в содержащий элемент? Например: <div class="body"> Вы можете применить те же стили к этому элементу.

/* change this: */
body { color: #f0f; etc }

/* to this: */
body, div.body { color: #f0f; }
0 голосов
/ 21 июля 2011

У меня была та же проблема, и я решил ее более или менее следующим образом: вместо использования load () вы можете использовать get () и выполнить некоторую умную замену строки:

var content = get("test.htm")
               .replace("<body>", "<body><div class='body'>")
               .replace("</body>", "</body>");
$("#test").replace($(content).filter(".body"));
0 голосов
/ 26 ноября 2009

Вы загружаете HTML-код в существующий документ, в котором уже есть тег body. Документ может иметь только один, поэтому он автоматически фильтрует что угодно и извлекает только HTML внутри тега body при использовании load. Вы должны заключить свой HTML в div с определенным классом и выполнить форматирование на основе этого класса.

Из нагрузки документы (выделено мое):

В jQuery 1.2 теперь вы можете указать Селектор jQuery в URL. Делать это будет фильтровать входящий HTML документ, только вставка элементов которые соответствуют селектору. Синтаксис выглядит примерно так: "url #some> селектор ". Селектор по умолчанию" тело> * " всегда применяется. Если URL содержит пространство должно быть escape () d. Увидеть примеры для получения дополнительной информации.

0 голосов
/ 26 ноября 2009

Вы можете динамически создать тег body, используя в качестве альтернативы document.write of js.

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