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

19.2.4. Чтение и запись значений элементов HTML-форм

Метод

<b>val()</b>
служит для чтения и записи значений атрибутов
<b>value</b>
элементов HTML-форм, а также для чтения и записи состояния выбора флажков, радиокнопок и элементов
<b>&lt;select&gt;:</b>

<b>$(&quot;«surname&quot;).val() // Получить значение текстового поля surname</b>

<b>$(&quot;«usstate&quot;).val() // Получить единственное значение из элемента &lt;select&gt;</b>

<b>$(&quot;select«extras”).val() // Получить массив значений из &lt;select multiple&gt;</b>

<b>$(&quot;input:radio[name=ship]:checked&quot;).val() // Получить значение атрибута</b>

<b>                                          // checked радиокнопки</b>

<b>$(&quot;«email&quot;).val(&quot;Invalid email address&quot;)  // Установить значение текст, поля</b>

<b>$(&quot;input:checkbox&quot;).val([&quot;opt1&quot;, &quot;opt2&quot;]) </b>
<b>// Установить флажки с указанными именами</b>

<b>                                          // или значениями</b>

<b>$(&quot;input:text&quot;).val(function() {          // Сбросить все текстовые поля</b>

<b>  return this.defaultValue;               // в значения по умолчанию</b>

<b>})</b>

19.2.5. Чтение и запись содержимого элемента

Методы

<b>text()</b>
и
<b>html()</b>
читают и записывают содержимое элемента или элементов в виде простого текста или разметки HTML. При вызове без аргументов метод
<b>text()</b>
возвращает содержимое всех вложенных текстовых узлов из всех выбранных элементов в виде простого текста. Этот метод работает даже в броузерах, не поддерживающих свойства
<b>textContent</b>
и
<b>innerText</b>
(раздел 15.5.2).

Если вызвать метод

<b>html()</b>
без аргументов, он вернет в виде разметки HTML содержимое только первого выбранного элемента. Для этой цели библиотека jQuery использует свойство
<b>inпегHTML</b>
:
<b>x.html()</b>
- фактически то же самое, что и
<b>x[0].innerHTML</b>
.

Если методу

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

<b>var title = $(&quot;head title&quot;).text()    // Получить заголовок документа </b>

<b>var headline = $(&quot;h1&quot;).html()         // Получить разметку html первого &lt;h1&gt; </b>

<b>$(&quot;h1&quot;).text(function(n,current) {    // Добавить в каждый заголовок </b>

<b>  return &quot;§&quot; + (n+1) + &quot;: &quot; + current // порядковый номер раздела </b>

<b>}); </b>

19.2.6. Чтение и запись параметров геометрии элемента

В разделе 15.8 мы узнали, насколько сложно бывает определить размер и координаты элемента, особенно в броузерах, не поддерживающих метод

<b>getBoundingClient-Rect()</b>
(раздел 15.8.2). Библиотека jQuery упрощает эти вычисления, предоставляя методы, работающие в любых броузерах. Обратите внимание, что все методы, описываемые здесь, являются методами чтения, и лишь некоторые из них могут использоваться для записи.

Метод

<b>offset()</b>
позволяет получить или изменить координаты элемента. Этот метод определяет координаты относительно начала документа и возвращает их в виде объекта со свойствами
<b>left</b>
и
<b>top</b>
, в которых хранятся координаты X и Y. Если передать методу объект с этими свойствами, он изменит координаты элемента в соответствии с указанными значениями. При необходимости он также установит CSS-атрибут
<b>position</b>
, чтобы сделать элемент позиционируемым:

<b>var elt = $(&quot;#sprite&quot;);      // Элемент, который требуется переместить </b>

<b>var position = elt.offset(); // Получить текущие координаты</b>

<b>position.top += 100;         // Изменить координату У</b>

<b>elt.offset(position);        // Переместить элемент в новую позицию</b>

<b>// Переместить все элементы &lt;h1&gt; вправо на расстояние, зависящее от их</b>

<b>// положения в документе</b>

<b>$('h1').offset(function(index,curpos) {</b>

<b>  return {left: curpos.left + 25*index, top:curpos.top};</b>

<b>}):</b>

Метод

<b>position()</b>
похож на метод
<b>offset(),</b>
за исключением того, что он позволяет только читать координаты и возвращает координаты элемента не относительно начала документа, а относительно его родителя. В разделе 15.8.5 мы узнали, что каждый элемент имеет свойство
<b>offsetParent</b>
, ссылающееся на родительский элемент, относительно которого определяются координаты. Позиционируемые элементы всегда играют роль начала координат для своих потомков, но некоторые броузеры дают эту роль и некоторым другим элементам, таким как ячейки таблицы. Роль начала координат в библиотеке jQuery могут играть только позиционируемые элементы, и метод
<b>offsetParent()</b>
объекта
<b>jQuery</b>
отображает каждый элемент на ближайший позиционируемый вмещающий элемент или на элемент
<b>&lt;body&gt;</b>
. Следует отметить не совсем удачный выбор имен этих методов:
<b>offset()</b>
возвращает абсолютные координаты элемента относительно начала документа, а метод
<b>position()</b>
возвращает смещение элемента относительно его ближайшего предка
<b>offsetРаrent ().</b>