jQuery: Различие между положением () и смещением ()

Между чем различие position() и offset()? Я пытался сделать следующее в событии щелчка:

console.info($(this).position(), $(this).offset());

И они, кажется, возвращают точно то же... (Нажатый элемент в рамках ячейки таблицы в таблице),

174
задан Svish 8 July 2010 в 09:01
поделиться

2 ответа

Являются ли они одним и тем же, зависит от контекста.

  • position возвращает объект {left: x, top: y} относительно смещенного родителя

  • offset возвращает объект {left: x, top: y} относительно документа.

Очевидно, что если документ является смещенным родителем, что часто бывает, они будут идентичны. смещенный родитель - это "ближайший позиционированный содержащий элемент."

Например, для этого документа:

 <div style="position: absolute; top: 200; left: 200;">
     <div id="sub"></div>
 </div>

Тогда $('#sub').offset() будет {left: 200, top: 200}, но его .position() будет {left: 0, top: 0}.

208
ответ дан 23 November 2019 в 20:32
поделиться

Метод .offset() позволяет получить текущую позицию элемента относительно документа. В отличие от метода .position(), который получает текущую позицию относительно родителя со смещением. При позиционировании нового элемента поверх существующего для глобального манипулирования (в частности, для реализации drag-and-drop), .offset() является более полезным.

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

28
ответ дан 23 November 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: