Событие jQuery для обнаружения изменения положения элемента

Я хотел бы знать, есть ли событие jQuery, которое я могу использовать, чтобы определить, когда изменилось конкретное свойство DIV top.

Например, у меня есть невидимый контент над DIV. Когда это содержимое становится видимым, DIV сдвигается вниз. Я хотел бы зафиксировать это событие, а затем использовать функцию offset() для получения координат X / Y.

Вы когда-нибудь находили решение этой проблемы?

Sam Dutton 11.02.2011 18:53

@Sam Dutton - Нет. Мое решение состояло в том, чтобы переосмыслить некоторые элементы макета и структуры страницы. Все становилось слишком сложным.

Steve Horn 16.02.2011 17:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
27
2
34 487
3

Ответы 3

Я думаю, вы должны уметь:

$(document).ready( function (){
  $("#mydiv").bind("movestart", function (){ ...remember start position... });
  $("#mydiv").bind("moveend", function (){ ...calculate offsets etc... });
});

с другой стороны, это может быть невозможно для относительно расположенных элементов

Strelok 10.12.2008 06:51

Что это за события movestart и moveend? plugins.jquery.com/event.move? В этом случае кажется, что эти события связаны с касанием и перемещениями мыши, а не обязательно с произвольными изменениями положения элементов.

Abdull 06.02.2014 23:08

Простой ответ заключается в том, что в DOM нет событий для обнаружения обновлений макета.

У вас есть пара вариантов, как я это вижу:

  1. Опрос, неприятный, но он может сработать в зависимости от ваших требований к частоте обновления.

  2. Нажмите на любое событие, которое заставит невидимый DIV изменить размер, и сделайте все, что вам нужно, в этом обработчике.


Я поправлюсь.

Я взглянул на DOM, заметил событие DOMAttrModified и нашел этот Подключаемый модуль JQuery, который вы могли бы использовать, чтобы делать то, что хотите.

Как упоминается в статье, он отлично работает в IE и Firefox, но, похоже, имеет проблемы в WebKit.

Я не думаю, что связанный с ним плагин будет работать в случае OP. Насколько я понимаю, событие DOMAttrModified срабатывает только тогда, когда атрибут изменяется скриптом, а не после изменения, на которое ссылается OP. Однако событие propertychange сработает (я думаю) в обоих случаях: help.dottoro.com/ljdchxcl.php

Sam Dutton 11.02.2011 18:46

Обратите внимание, что решение Рика также использует опрос, что означает, что у вас в основном есть компромисс между тем, что выглядит гладким, и отсутствием ненужного прожигания процессора.

devios1 22.03.2012 00:00
$("#someId").resize(function () {

// your code

});

это ничего не делает.

Claude Martin 22.09.2017 16:34

Другие вопросы по теме