Между чем различие position()
и offset()
? Я пытался сделать следующее в событии щелчка:
console.info($(this).position(), $(this).offset());
И они, кажется, возвращают точно то же... (Нажатый элемент в рамках ячейки таблицы в таблице),
Являются ли они одним и тем же, зависит от контекста.
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}
.
Метод .offset() позволяет получить текущую позицию элемента относительно документа. В отличие от метода .position(), который получает текущую позицию относительно родителя со смещением. При позиционировании нового элемента поверх существующего для глобального манипулирования (в частности, для реализации drag-and-drop), .offset() является более полезным.
Источник: http://api.jquery.com/offset/