I've got a div that contains some content that's being added and removed dynamically, so its height is changing often. I also have a div that is absolutely positioned directly underneath with javascript, so unless I can detect when the height of the div changes, I can't reposition the div below it.
So, how can I detect when the height of that div changes? I assume there's some jQuery event I need to use, but I'm not sure which one to hook into.
You can use the DOMSubtreeModified event
But this will fire even if the dimensions don't change, and reassigning the position whenever it fires can take a performance hit. In my experience using this method, checking whether the dimensions have changed is less expensive and so you might consider combining the two.
Or if you are directly altering the div (rather than the div being altered by user input in unpredictable ways, like if it is contentEditable), you can simply fire a custom event whenever you do so.
Downside: IE and Opera don't implement this event.
You can make a simple setInterval.
EDIT:
This is a example with a class. But you can do something easiest.
In response to user007:
If the height of your element is changing due to items being appended to it using
.append()
you shouldn't need to detect the change in height. Simply add the reposition of your second element in the same function where you are appending the new content to your first element.As in:
Working Example
You can use
MutationObserver
class.MutationObserver
provides developers a way to react to changes in a DOM. It is designed as a replacement for Mutation Events defined in the DOM3 Events specification.Example (source)