web-dev-qa-db-ja.com

要素の位置が変更されたことを検出するjQueryイベント

特定のDIVのtopプロパティがいつ変更されたかを判断するために使用できるjQueryイベントがあるかどうかを知りたいです。

たとえば、DIVの上に非表示のコンテンツがあります。そのコンテンツが表示されると、DIVが下にシフトされます。そのイベントをキャプチャしてから、offset()関数を使用してX/Y座標を取得したいと思います。

27
Steve Horn

簡単な答えは、レイアウトの更新を検出するためのイベントがDOMにないということです。

私の見方にはいくつかの選択肢があります。

  1. ポーリング、厄介ですが、更新頻度の要件によっては機能する場合があります。

  2. 非表示のDIVのサイズを変更するイベントを利用して、そのハンドラーで必要なことをすべて実行します


自分で直します。

DOMを調べて、DOMAttrModifiedイベントに気づき、これを見つけました JQuery Plug-In あなたがやりたいことをするために活用できるかもしれません。

記事に記載されているように、IEとFirefoxではうまく機能しますが、WebKitでは問題があるようです。

8
joshperry

私はあなたができるはずだと思います:

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