Просмотр полной версии : offset - установка местоположения для невидимых элементов.
Объясните пожалуйста, почему jquery функция offset некорректно устанавливает местоположение невидимым элементам?
я заметил, что при таком вызове:
$("#id").show().offset({left: 100, top: 100 }); всё хорошо.
а если сделать так:
$("#id").offset({left: 100, top: 100 }).show();
то при каждом новом выполнении этого кода, элемент смещается чуть ниже и правее, хотя координаты в обеих случаях задаются абсолютные.
TestUser013
17.01.2017, 00:45
http://api.jquery.com/offset/
Note: jQuery does not support getting the offset coordinates of hidden elements or accounting for borders, margins, or padding set on the body element.
While it is possible to get the coordinates of elements with visibility:hidden set, display:none is excluded from the rendering tree and thus has a position that is undefined.
Странно что второй вариант вообще работает :)
Немного не то.
Там написано, что не поддерживается получение координат для скрытых элементов, а я пытаюсь установить координаты скрытому, а потом показать его.
http://rem-mastera.ru/media/imgs/tmp/jquery_offset.html здесь демо пример сделал, для наглядности.
хотя координаты в обеих случаях задаются абсолютные
У тебя не совсем верное представление об абсолютных координатах... :)
Ты пытаешься использовать координаты относительно документа. ;)
я пытаюсь установить координаты скрытому, а потом показать его.
И ты решил, что это будет работать... Но оно не работает.
offset
$("#FloatForm").css({ left:100, top:100}).show();
winch, там плагин сам позиционирует и ты еще из вне пытаешься - вот такой эффект и получается в результате.
ну я же делаю offset({ left:100, top:100}), по логике координаты должны записаться поверх и затереть, то что позиционирует плагин. а получается, что они как бы добавляются к предыдущей позиции.
У тебя не совсем верное представление об абсолютных координатах... :)
Ты пытаешься использовать координаты относительно документа. ;)
а координаты относительно документа и абсолютные - это не одно и тоже?
ну хотя это не важно. вопрос был почему метод offset для видимых и невидимых элементов устанавливает позицию по разному.
$("#FloatForm").css({ left:100, top:100}).show();
добавил к своему примеру вариант через css. да, в этом случае работает корректно. но мне просто интересно почему offset с невидимыми элементами работает так странно.
мне просто интересно почему offset с невидимыми элементами работает так странно
Запиши это как особенность. :D
winch, по какой логике) click в плагине весит делегированно на документе, твой же click весит непосредственно на элементе, поэтому в процессе всплытия события сперва сработает твой клик, а уже затем клик плагина.
клик плагина должен делегировано срабатывать на элементах с классом .FloatFormAnchor
в данном случае он не работает.
А мне казалось так: зачем ему знать своё текущее значение, если я ему говорю встать в уже определенную относительно документа позицию?
по идеи его текущее местоположения никого интересовать не должно.
ну да ладно, как посоветовал ksa, запишем это как особенность :)
ясно. спасибо за разъяснение.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot