ブロックの幅が変更されたときに呼び出されるイベントはありますか?

木士羽

聞くブロックの幅が変わったときにコードを呼び出したい。方法?

onresize ウィンドウのサイズが変更された場合にのみ呼び出されます。

役に立たないコード

あなたが言ったようresizeに、ページ上の要素イベントはありませんwindow

ただし、Mutation Observers使用して、要素の変更を検出できます。

var foo = document.querySelector('#foo'),
  oldWidth = foo.style.width,
  observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        if (mutation.target === foo && mutation.attributeName === 'style' &&
            oldWidth !== foo.style.width) {
          console.log('Width Changed!');
          oldWidth = foo.style.width;
        }
    });    
  });

// configuration of the observer, just look for attribute changes:
var config = {
  attributes: true
};

observer.observe(foo, config);

jsFiddle

もう少し作業を行うことで、幅の変化を検出する要素にカスタムイベントを追加する関数を作成できます。

var addWidthChangeEvent = function (element) {
    var oldWidth = foo.style.width,
      observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
          if (mutation.target === element && mutation.attributeName === 'style' &&
              oldWidth !== element.style.width) {
            oldWidth = foo.style.width;
            element.dispatchEvent(new Event('widthChange'));
          }
        });    
      });

  // configuration of the observer, just look for attribute changes:
  var config = {
    attributes: true
  };

  observer.observe(element, config);
}


var foo = document.getElementById('foo');
// create the custom event observer
addWidthChangeEvent(foo);
// you can now use addEventListener or jQuery to react
// to 'widthChange' events

foo.addEventListener('widthChange', function (event) {
  // every time the width changes the text inside the box will
  // be changed to the new width
  foo.textContent = foo.style.width;
}, false);

jsFiddle

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

値が変更されたとき、またはセットが呼び出されたときにINotifyPropertyChangedを発生させる必要がありますか?

分類Dev

複数のタブでの読み取り/書き込みまたはバージョン変更により、インデックス付きデータベースがブロックされていることを検出する方法はありますか?

分類Dev

コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

分類Dev

JSで変数が変更されたときに、さまざまなイベントを呼び出す

分類Dev

PreviewMouseLeftButtonUpイベントは、マウスがクリックされたときに呼び出されません

分類Dev

コンパイル時に、指定されたパラメータータイプのセットでジェネリックラムダを正常に呼び出すことができるかどうかを検出する方法はありますか?

分類Dev

関数をリストまたはディクショナリに格納して、インデックス(またはキー)が呼び出されたときに、格納された関数を起動する方法はありますか?

分類Dev

ファイルサイズが更新されたときに、ディレクトリの変更を監視するDispatchSourceは呼び出されません

分類Dev

派生クラスのメソッドが呼び出されたときに基本クラスに通知される可能性はありますか?

分類Dev

DOMが変更されたときにイベントハンドラーをクリーンアップする必要がありますか?

分類Dev

exec()またはspawn(P_OVERLAY)を呼び出すと、コンソールのブロックが解除されます。コンソールをブロックしたままにする方法はありますか?

分類Dev

サブスクライブされた配列がまだ変更されていないのに、useEffectが呼び出されるのはなぜですか?

分類Dev

ベクターへのポインタによって呼び出されたメソッドはオブジェクトを変更できません

分類Dev

Java-インスタンスブロックがコンストラクターの後に呼び出されるのはなぜですか、またはコンストラクター内で順序的に呼び出されるのですか?

分類Dev

あるイベント用に作成されたJS関数を別のイベントで呼び出すことはできますか?

分類Dev

親の変更(小道具)が原因でレンダリング関数が呼び出されたのか、内部状態が変更されたために呼び出されたのかを知る方法はありますか?

分類Dev

モックが呼び出されたときに、モックアウトされたメソッドに渡されたインスタンス/オブジェクトをモックが無視するのはなぜですか?

分類Dev

クロージャでは、メイン変数が呼び出されるたびにリセットされないのはなぜですか?

分類Dev

イベントスクロール(scrollViewDidScroll)が呼び出されることはありません-Swift 3

分類Dev

シングルの結果をキャッシュしたり、複数のサブスクライバーで呼び出されたときに複数回実行されないようにする方法はありますか?

分類Dev

ソースリストが変更されたときにComboBox変更イベントが呼び出されないようにする方法

分類Dev

コピー(ソースとターゲットが異なるディスクにある場合)が完了するまで、Linuxの「名前の変更」関数呼び出しブロックは実行されますか

分類Dev

FacebookでログインするときにPFLoginViewControllerdidLoginが呼び出されることはありません

分類Dev

FacebookでログインするときにPFLoginViewControllerdidLoginが呼び出されることはありません

分類Dev

Safariは、クリックイベントから呼び出されたにもかかわらず、ビデオのplay()をブロックします

分類Dev

PCIeデバイスに設定されたアービトレーションスキームを変更するために呼び出すことができるLinuxシステムコマンドはありますか?

分類Dev

Firebase verifyIdToken()は、キャッシュされたときに新しいトークンごとにFirebase APIを呼び出す必要がありますか?

分類Dev

既存の属性がインクリメントされるときに__setattr__が呼び出されますか?

分類Dev

WebRTCネイティブ、AudioTrackSinkInterfaceがトラックに追加されましたが、OnDataが呼び出されることはありません

Related 関連記事

  1. 1

    値が変更されたとき、またはセットが呼び出されたときにINotifyPropertyChangedを発生させる必要がありますか?

  2. 2

    複数のタブでの読み取り/書き込みまたはバージョン変更により、インデックス付きデータベースがブロックされていることを検出する方法はありますか?

  3. 3

    コンストラクターまたはinitブロックから呼び出されたオーバーライドされた抽象関数で変数を初期化するときに変数が正しく初期化されない

  4. 4

    JSで変数が変更されたときに、さまざまなイベントを呼び出す

  5. 5

    PreviewMouseLeftButtonUpイベントは、マウスがクリックされたときに呼び出されません

  6. 6

    コンパイル時に、指定されたパラメータータイプのセットでジェネリックラムダを正常に呼び出すことができるかどうかを検出する方法はありますか?

  7. 7

    関数をリストまたはディクショナリに格納して、インデックス(またはキー)が呼び出されたときに、格納された関数を起動する方法はありますか?

  8. 8

    ファイルサイズが更新されたときに、ディレクトリの変更を監視するDispatchSourceは呼び出されません

  9. 9

    派生クラスのメソッドが呼び出されたときに基本クラスに通知される可能性はありますか?

  10. 10

    DOMが変更されたときにイベントハンドラーをクリーンアップする必要がありますか?

  11. 11

    exec()またはspawn(P_OVERLAY)を呼び出すと、コンソールのブロックが解除されます。コンソールをブロックしたままにする方法はありますか?

  12. 12

    サブスクライブされた配列がまだ変更されていないのに、useEffectが呼び出されるのはなぜですか?

  13. 13

    ベクターへのポインタによって呼び出されたメソッドはオブジェクトを変更できません

  14. 14

    Java-インスタンスブロックがコンストラクターの後に呼び出されるのはなぜですか、またはコンストラクター内で順序的に呼び出されるのですか?

  15. 15

    あるイベント用に作成されたJS関数を別のイベントで呼び出すことはできますか?

  16. 16

    親の変更(小道具)が原因でレンダリング関数が呼び出されたのか、内部状態が変更されたために呼び出されたのかを知る方法はありますか?

  17. 17

    モックが呼び出されたときに、モックアウトされたメソッドに渡されたインスタンス/オブジェクトをモックが無視するのはなぜですか?

  18. 18

    クロージャでは、メイン変数が呼び出されるたびにリセットされないのはなぜですか?

  19. 19

    イベントスクロール(scrollViewDidScroll)が呼び出されることはありません-Swift 3

  20. 20

    シングルの結果をキャッシュしたり、複数のサブスクライバーで呼び出されたときに複数回実行されないようにする方法はありますか?

  21. 21

    ソースリストが変更されたときにComboBox変更イベントが呼び出されないようにする方法

  22. 22

    コピー(ソースとターゲットが異なるディスクにある場合)が完了するまで、Linuxの「名前の変更」関数呼び出しブロックは実行されますか

  23. 23

    FacebookでログインするときにPFLoginViewControllerdidLoginが呼び出されることはありません

  24. 24

    FacebookでログインするときにPFLoginViewControllerdidLoginが呼び出されることはありません

  25. 25

    Safariは、クリックイベントから呼び出されたにもかかわらず、ビデオのplay()をブロックします

  26. 26

    PCIeデバイスに設定されたアービトレーションスキームを変更するために呼び出すことができるLinuxシステムコマンドはありますか?

  27. 27

    Firebase verifyIdToken()は、キャッシュされたときに新しいトークンごとにFirebase APIを呼び出す必要がありますか?

  28. 28

    既存の属性がインクリメントされるときに__setattr__が呼び出されますか?

  29. 29

    WebRTCネイティブ、AudioTrackSinkInterfaceがトラックに追加されましたが、OnDataが呼び出されることはありません

ホットタグ

アーカイブ