JavaScript. Подробное руководство, 6-е издание, стр. 302

Чтобы связать данные с элементами в объекте

<b>jQuery</b>
, нужно вызвать
<b>data()</b>
как метод записи, передав ему в виде двух аргументов имя и значение. Методу
<b>data()</b>
как методу записи можно также передать единственный объект, каждое свойство которого будет использоваться как пара имя/значение, связываемая с элементом или элементами в объекте
<b>jQuery</b>
. Однако обратите внимание, что, когда методу
<b>data()</b>
передается объект, свойства этого объекта будут замещать все данные, ранее связанные с элементом или элементами. В отличие от многих других методов записи, с которыми мы уже познакомились, метод
<b>data()</b>
не вызывает функцию, переданную ему. Если во втором аргументе передать методу
<b>data()</b>
функцию, она будет сохранена, как любое другое значение.

Конечно, метод

<b>data()</b>
может также использоваться в роли метода чтения. При вызове без аргументов он возвращает объект, содержащий все пары имя/значение, связанные с первым элементом в объекте
<b>jQuery</b>
. При вызове метода
<b>data()</b>
с единственным строковым аргументом он возвращает значение, связанное с этой строкой в первом элементе.

Для удаления данных из элемента или элементов можно использовать метод

<b>removeData().</b>
(Вызов метода data() с именованным значением null или undefined фактически не удаляет данные.) Если методу
<b>removeData()</b>
передать строку, он удалит значение, связанное с этой строкой в элементе или элементах. Если вызвать метод
<b>removeData()</b>
без аргументов, он удалит все данные:

<b>$(&quot;div&quot;).data(&quot;x&quot;, 1);           // Записать некоторые данные</b>

<b>S(&quot;div.nodata”).removeData(&quot;x&quot;); // Удалить некоторые данные </b>

<b>var х = $('flmydiv').data(&quot;x”);  // Получить некоторые данные</b>

Кроме того, библиотека jQuery определяет вспомогательные функции, действующие аналогично методам

<b>data()</b>
и
<b>removeData().</b>
Таким образом, связать данные с отдельным элементом е можно с помощью метода или функции
<b>data():</b>

<b>$(е).data(...) // Метод </b>

<b>$.data(e, ...) // Функция</b>

Механизм хранения данных в библиотеке jQuery не использует для этой цели свойства самих элементов, но добавляет одно специальное свойство ко всем элементам, имеющим связанные с ними данные. Некоторые броузеры не позволяют добавлять свойства к элементам

<b>&lt;applet&gt;, &lt;object&gt;</b>
и
<b>&lt;embed&gt;,</b>
поэтому библиотека jQuery просто не дает возможности связать данные с элементами этих типов.

19.3. Изменение структуры документа

В разделе 19.2.5 мы познакомились с методами

<b>html()</b>
и
<b>text(),</b>
позволяющими изменять содержимое элемента. В этом разделе будут рассматриваться методы, позволяющие производить более сложные изменения в документе. В броузере HTML-документы представлены в виде дерева узлов, а не в виде линейной последовательности символов, поэтому вставку, удаление и замену фрагмента документа выполнить не так просто, как фрагмента строки или массива. В следующих подразделах описываются различные методы объекта
<b>jQuery</b>
, предназначенные для внесения изменений в документ.

19.3.1. Вставка и замена элементов

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

<b>jQuery</b>
, элемент
<b>Element</b>
или текстовый узел
<b>Node</b>
. Вставка может быть выполнена внутрь, перед, после или вместо (в зависимости от метода) каждого выбранного элемента. Если в качестве вставляемого содержимого используется элемент, уже присутствующий в документе, он перемещается из текущего местоположения. Если выполняется вставка сразу в несколько мест, элемент будет скопирован необходимое число раз. Все эти методы возвращают объект
<b>jQuery</b>
, относительно которого они вызываются. Обратите, однако, внимание, что после вызова метода
<b>replaceWith()</b>
элементы, находящиеся в объекте
<b>jQuery</b>
, исключаются из документа:

<b>$(&quot;#log&quot;).appendC&lt;br/&gt;&quot;+message); // Добавить содержимое в конец элем. #1од</b>

<b>$(&quot;h1&quot;).ргерепсК // Добавить символ параграфа в начало каждого элемента &lt;h1&gt;</b>

<b>$( &quot;hi”).before(&quot;&lt;hr/&gt;');      // Вставить линию перед каждым элем. &lt;h1&gt;</b>

<b>$( &quot;hi&quot;).after(&quot;&lt;hr/&gt;&quot;);       // И после</b>

<b>$( &quot;hr&quot;).replaceWith(&quot;&lt;br/&gt;”); // Заменить элементы &lt;hr/&gt; на &lt;Ьг/&gt;</b>

<b>$(&quot;h2&quot;).each(function() {      // Заменить &lt;h2&gt; на &lt;h1&gt;,</b>

<b>       var h2 = $(this);       // сохранив содержимое</b>

<b>       h2.replaceWith(&quot;&lt;h1&gt;&quot; + h2.html() + &quot;&lt;/h1&gt;&quot;);</b>

<b>});</b>

<b>// Методы after() и before() могут также применяться к текстовым узлам </b>

<b>// Ниже демонстрируется другой способ добавления символа параграфа во все &lt;h1&gt; </b>

<b>$(&quot;h1&quot;).map(function() { return this.firstChild; }).before(&quot;§&quot;);</b>