2012-11-19 53 views
3

我試圖找到一種方法來監視/觀察DOM元素上的偏移量/寬度/高度以捕獲任何更改。但是,如果另一個元素移動了監視元素或調整了它的大小,我還需要捕獲元素的任何更改。例如。觀看對象上方的DOM元素增長,並佔用更多空間,導致觀看元素偏移得到移動。當一個不同的元素髮生變化時,觀察dom中元素的偏移量?

Example to demonstrate what I need to watch/monitor

我已經使用定時器實現的,但回調/觀察者會好很多。

我發現了幾種方法來監視特定元素的變化,但是這涉及到監視整個DOM的變化,這並不理想。

顯示如何監視/監視特定項目上的更改的解決方案無法幫助,因爲它們依賴於該特定項目上的屬性/ CSS更改。什麼是不工作 例子: jQuery CSS Property Monitoring Another watch tool

我覺得MutationObserver可能的工作,但我還沒有得到它的工作。

如果有人有想法,請賜教給我!

更新14.Oct 2013:請參閱我自己的答案解決方案。

+0

你用'MutationObserver'試了一下,到目前爲止,當屬性改變這應該引起:

github.com/leifcr/jquery-csswatch和例子在這裏來源。它可能不會讓你在那裏完成,但它可能會有所幫助 - 除非它不會引發風格變化。我其實沒有親自檢查過。 – Pebbl

+0

好吧,剛剛檢查過,'MutationObservers'做了一個樣式屬性更改(至少在FireFox中)..但它並不知道哪個屬性發生了變化。仍然有用壽。但是,如果其他元素(或者如果窗口)偏移了尺寸,這將無法幫助您做出反應。爲此,你肯定需要一個間隔/超時檢查器和一個窗口調整大小的事件監聽器......除非有人知道js方法允許你進入用戶代理渲染過程? – Pebbl

+0

與我經歷的完全一樣的問題。捕捉可能影響另一個項目的偏移量的內聯樣式變化是很容易的,但是如果在dom中存在改變要觀察的項目的偏移量的類別變化,則「MutationObserver」將僅僅指示類別已被添加。我想我會添加一個突變觀察者來捕捉任何變化,然後做一個手動的'if offset.top!= old_offset.top'。至少比使用定時器更好。 – leifcr

回答

相關問題