0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[イベントデリゲーション] 遅延読み込み(Ajax)修正後に色々な箇所が動かなくなった

Last updated at Posted at 2023-08-24

はじめに

リストデータを読み込む際に、時間がかかるということでUX改善のためリストデータの読み込みを遅延読み込み(Ajax)に修正したらJavaScriptで制御しているいろいろな箇所が動かなくなった。

改善前のソースコード

$(function() {
    $('任意のセレクター').click(function(e) {
        // 処理
    });
});

この任意のセレクターに修正した遅延読み込みのタグが指定されているのが原因だった。
画面読み込み後に確定する$('任意のセレクター')の、任意のセレクターがまだ存在していないからだ。順序的にはこんな感じ?

  1. ドキュメントの読み込みが完了→$(function()
  2. セレクタ―確定→$('任意のセレクタ―')
  3. Ajaxリクエスト
  4. 「任意のセレクタ―」を含むHTMLの描画

解決策

$(function() {
    $(document).on('click', '任意のセレクター', function(e) {
        // 処理
    });
});

セレクターそのものは一番の親要素であるdocumentに設定しその子要素の中で何をクリックするかを定義する。
これをイベントデリゲーションというらしい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?