Подтвердить что ты не робот

Как получить правильное смещение элемента? - jQuery

Это, наверное, очень простой вопрос, но как мне получить правильное смещение элемента в jQuery?

Я могу сделать:

$("#whatever").offset().left;

и оно действительно.

Но кажется, что:

$("#whatever").offset().right 

- undefined.

Итак, как это выполнить в jQuery?

Спасибо!!

4b9b3361

Ответ 1

Алекс, Гэри:

В соответствии с запросом, вот мой комментарий, отправленный как ответ:

var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));

Спасибо, что сообщили мне.

Ответ 2

var $whatever        = $('#whatever');
var ending_right     = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));

Ссылка: . outerWidth()

Ответ 3

Возможно, я не понимаю ваш вопрос, но смещение должно дать вам две переменные: горизонтальную и вертикальную. Это определяет положение элемента. Итак, вы ищете:

$("#whatever").offset().left

и

$("#whatever").offset().top

Если вам нужно знать, где находится правая граница вашего элемента, вы должны использовать:

$("#whatever").offset().left + $("#whatever").outerWidth()

Ответ 4

Просто добавление к тому, что сказал Грег:

$( "# whatever" ). offset(). left + $( "# whatever" ). outerWidth()

Этот код получит правильное положение относительно левой стороны. Если целью было получить правильную позицию относительно права (например, при использовании свойства CSS right), то добавление к коду необходимо следующим образом:

$( "# parent_container" ). innerWidth() - ($ ( "# whatever" ). offset(). left + $( "# whatever" ). outerWidth())

Этот код полезен в анимациях, где вы должны установить правильную сторону как фиксированный якорь, если вы не можете изначально установить свойство right в CSS.

Ответ 5

У Брендана Кроуфорда был лучший ответ здесь (в комментарии), поэтому я переведу его до ответа, пока он не сделает (и, возможно, немного расширится).

var offset = $('#whatever').offset();

offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));

Ответ 6

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

var offset = $('#whatever').offset();

offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));

Ответ 7

Там есть собственный DOM API, который достигает этого из коробки - getBoundingClientRect:

document.querySelector("#whatever").getBoundingClientRect().right

Ответ 8

Получение точки привязки в div/table (left) = $("#whatever").offset().left; - ОК

Получив опорную точку div/table (right), вы можете использовать код ниже.

 $("#whatever").width();