2013-06-26 1 views
3

Я использую $.position над тем же селектором, и я получаю разные результаты для значения top.

Проблема может заключаться в получении положения селектора внутри прокручиваемого div. Вот почему я использую $.position вместо $.offset, но, похоже, я делаю что-то неправильно.

Вы можете попробовать его, нажав несколько раз на текст «Get Position» на моей скрипке: http://jsfiddle.net/FgftM/1/

После ДИВ прокрутил искать селектор, нажав на «Получить позиции» снова не должен делать ничего, потому что я уже нахожусь в положении выбора.

Полученные значения position показаны внизу.

Для уточнения структуры страницы, вот эскиз: enter image description here

Оригинал скрипку: http://jsfiddle.net/BtZQE/16/

ответ

2

Я считаю, что вы хотите сделать, это установить position: relative на #content. Таким образом, position рассчитывается по отношению к контейнеру вместо общей страницы.

http://jsfiddle.net/FgftM/6/

EDIT: После разъяснения, вы все еще нуждаетесь в position: relative, но также необходимо добавить в текущем scrollTop значения:

http://jsfiddle.net/FgftM/8/

var top = dest.top + $('#content').scrollTop(); 
+0

Но все еще не решает мою проблему. Он по-прежнему показывает 2 значения (500 и 0) для одного и того же селектора. Я ищу только для того, чтобы оставаться в селекторе. Если я уже на нем. Каждый раз, когда я нажимаю на ссылку, я должен быть перемещен во второй ящик, красный. – Alvaro

+0

@Steve Хорошо, обновленный ответ. Вам просто нужно добавить текущий 'scrollTop' к текущей позиции элемента в контейнере. –

+0

Спасибо, чувак! Приятно это знать :) – Alvaro

1

@James имеет правильное решение, но для дополнительного уточнения: position относится к offsetPare nt, что не обязательно является непосредственным предком элемента.

Для алгоритма, используемого для определения offsetParent такой элемент, см http://www.w3.org/TR/cssom-view/#offset-attributes

Соответствующий пункт здесь, как Джеймс отметил, что свойство позиция offsetParent должно быть нечто иное, чем статическое, а если нет такого предка , offsetParent будет body элемент

+0

(+1) Спасибо за разъяснение :) – Alvaro