Spec-Zone.ru › jQuery

.html()

Получение HTML-содержимого первого элемента в наборе сопоставленных элементов или установка HTML-содержимого каждого сопоставленного элемента.

Содержание:

  • .html()
    • .html()
  • .html( htmlString )
    • .html( htmlString )
    • .html( function )

.html()Возвращает: String

Описание: Получение HTML-содержимого первого элемента в наборе сопоставленных элементов.

  • версия добавлена: 1.0.html()

    • Этот метод не принимает никаких аргументов.

Этот метод недоступен для XML-документов.

В HTML-документе .html() можно использовать для получения содержимого любого элемента. Если выражение селектора соответствует более чем одному элементу, будет возвращено содержимое только первого совпадения. Рассмотрим этот код:

$( "div.demo-container" ).html();

Для получения содержимого следующего <div>, он должен быть первым элементом с class="demo-container" в документе:

<div class="demo-container">
  <div class="demo-box">Demonstration Box</div>
</div>

Результат будет выглядеть так:

<div class="demo-box">Demonstration Box</div>

Этот метод использует свойство браузера innerHTML. Некоторые браузеры могут не возвращать HTML, который точно воспроизводит исходный HTML в исходном документе. Например, Internet Explorer иногда опускает кавычки вокруг значений атрибутов, если они содержат только буквенно-цифровые символы.

Дополнительные заметки:

  • По своему дизайну, любой конструктор jQuery или метод, принимающий строку HTML — jQuery(), .append(), .after() и т. д. — потенциально могут выполнять код. Это может произойти из-за инъекции тегов script или использования HTML-атрибутов, которые выполняют код (например, <img onload="">). Не используйте эти методы для вставки строк, полученных из ненадежных источников, таких как параметры запроса URL, cookie или данные форм. Это может привести к уязвимостям типа межсайтового скриптинга (XSS). Удаляйте или экранируйте любые пользовательские данные перед добавлением содержимого в документ.

Пример:

Нажмите на абзац, чтобы преобразовать его из html в текст.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
  <style>
  p {
    margin: 8px;
    font-size: 20px;
    color: blue;
    cursor: pointer;
  }
  b {
    text-decoration: underline;
  }
  button {
    cursor: pointer;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<p>
  <b>Click</b> to change the <span id="tag">html</span>
</p>
<p>
  to a <span id="text">text</span> node.
</p>
<p>
  This <button name="nada">button</button> does nothing.
</p>
 
<script>
$( "p" ).on( "click", function() {
  var htmlString = $( this ).html();
  $( this ).text( htmlString );
});
</script>
 
</body>
</html>

Демо:

.html( htmlString )Возвращает: jQuery

Описание: Установка HTML-содержимого каждого элемента в наборе сопоставленных элементов.

  • версия добавлена: 1.0.html( htmlString )

    • htmlString
      Тип: htmlString
      Строка HTML, которая должна быть установлена в качестве содержимого каждого сопоставленного элемента.
  • версия добавлена: 1.4.html( function )

    • function
      Тип: Функция( Целое число индекс, htmlString oldhtml ) => htmlString
      Функция, возвращающая HTML-содержимое для установки. Получает индекс элемента в наборе и старое значение HTML в качестве аргументов. jQuery очищает элемент перед вызовом функции; используйте аргумент oldhtml для ссылки на предыдущее содержимое. Внутри функции this относится к текущему элементу в наборе.

Метод .html() недоступен в XML-документах.

Когда .html() используется для установки содержимого элемента, любое предыдущее содержимое полностью заменяется новым. Кроме того, jQuery удаляет другие конструкции, такие как данные и обработчики событий, из дочерних элементов перед заменой этих элементов новым содержимым.

Рассмотрим следующий HTML:

<div class="demo-container">
  <div class="demo-box">Demonstration Box</div>
</div>

Содержимое <div class="demo-container"> можно установить следующим образом:

$( "div.demo-container" )
  .html( "<p>All new content. <em>You bet!</em></p>" );

Эта строка кода заменит всё внутри <div class="demo-container">:

<div class="demo-container">
  <p>All new content. <em>You bet!</em></p>
</div>

Начиная с jQuery 1.4, метод .html() позволяет установить HTML-содержимое, передав функцию.

$( "div.demo-container" ).html(function() {
  var emphasis = "<em>" + $( "p" ).length + " paragraphs!</em>";
  return "<p>All new content for " + emphasis + "</p>";
});

Для документа с шестью абзацами этот пример установит HTML <div class="demo-container"> в <p>All new content for <em>6 paragraphs!</em></p>.

Этот метод использует свойство браузера innerHTML. Некоторые браузеры могут не генерировать DOM, который точно воспроизводит предоставленный исходный HTML. Например, Internet Explorer до версии 8 преобразует все атрибуты href ссылок в абсолютные URL, а Internet Explorer до версии 9 не будет правильно обрабатывать HTML5-элементы без добавления отдельного слоя совместимости.

Для установки содержимого элемента <script>, который не содержит HTML, используйте метод .text(), а не .html().

Примечание: В Internet Explorer до версии 9 включительно установка текстового содержимого HTML-элемента может повредить текстовые узлы его дочерних элементов, которые удаляются из документа в результате операции. Если вы сохраняете ссылки на эти DOM-элементы и хотите, чтобы они остались неизменными, используйте .empty().html( string ) вместо .html(string), чтобы элементы были удалены из документа до присвоения новой строки элементу.

Примеры:

Добавить немного html в каждый div.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
  <style>
  .red {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<span>Hello</span>
<div></div>
<div></div>
<div></div>
 
<script>
$( "div" ).html( "<span class='red'>Hello <b>Again</b></span>" );
</script>
 
</body>
</html>

Демо:

Добавить немного html в каждый div, а затем немедленно выполнить дополнительные манипуляции с вставленным html.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>html demo</title>
  <style>
  div {
    color: blue;
    font-size: 18px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<div></div>
<div></div>
<div></div>
 
<script>
$( "div" ).html( "<b>Wow!</b> Such excitement..." );
$( "div b" )
  .append( document.createTextNode( "!!!" ) )
  .css( "color", "red" );
</script>
 
</body>
</html>

Демо:

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API