jQuery - размещение div со смещением, затем повторное размещение = разные результаты - PullRequest
2 голосов
/ 08 февраля 2012

Я помещаю div, используя другой идентификатор div в качестве ссылки на странице (чтобы убедиться, что он появляется там, где я хочу). Код выглядит следующим образом: -

$('#' + contentDiv).offset({top:($('#' + placementID).offset().top), left: ($('#' + placementID).offset().left)});

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

например. Я вызываю функцию по щелчку и говорю, поместите этот div рядом с этим div размещения, пожалуйста. Это делает это. Затем пользователь выходит, а затем делает еще один щелчок, и та же функция используется для размещения другого div рядом с тем же div размещения. Он делает это, но вместо того, чтобы поместить его в ту же позицию, что и в прошлый раз, кажется, ссылается на позицию последнего времени как точку 0 и добавляет к ней левую величину. Это означает, что div теперь находится на двойном расстоянии.

Обратите внимание; Я утешил размеры окна размещения сверху и слева, и он не менялся после каждого раза.

Не уверен, что происходит.

Ответы [ 4 ]

5 голосов
/ 10 февраля 2012

Если кто-то сталкивается с этим, мне удалось решить проблему очень просто ... используя css вместо offset.Т.е.

$('#contentDiv').css({top:placeTop,left:placeLeft});
0 голосов
/ 05 апреля 2016

Сбросьте ваши свойства перед установкой желаемого значения смещения с помощью (например)

$(this).css('top', '').offset({top: desiredTopOffset});
0 голосов
/ 11 июня 2014

Согласно http://bugs.jqueryui.com/ticket/6868 Элемент должен быть видимым перед вызовом .position (). после изменения моего кода, чтобы показать элемент перед вызовом offet (), он работал как шарм.

0 голосов
/ 08 февраля 2012

Я предполагаю, что когда вы изменяете смещение $('#' + contentDiv), это влияет на смещение вашего $('#' + placementID), который вы впоследствии вызываете.

Скажем, у вас есть 3 идентификатора размещения # 1, # 2 и # 3.

со смещениями #1: 0,0 #2: 0,100 и #3: 0,200.

Затем вы устанавливаете для #contentDiv значение #1смещение.

Теперь смещение #contentDiv равно 0,100.Это делает ваши смещения мест размещения #1: 0,100 #2: 0,200 и #3: 0,300 соответственно.Что, вероятно, и сбивает вас с толку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...