はじめに
前回に引き続き、遅延読み込み(Ajax)の修正後に躓いた話。
jQueryの$(window).on ('load')
が上手く動かない。。。
具体的には、リストデータを遅延読み込みする際に画面読み込み時だけ上手く動かず(動くこともある)、条件検索や件数表示を変えたときの処理はきちんと動く。
改善前のソースコードはこんな感じ。
$(function () {
$(window).on('load', function(){
// ここでAjax通信を行う。
});
}
これがそもそもダメだった。
$(function () {}
で$(window).on('load', function(){});
を囲うことは jQuery3以降では完全にアウトとのこと。
解決策
$(window).on('load', function(){
// ここでAjax通信を行う。
});
これだけ。$(function () {}
の外に出すだけ。
ただ、開発によっては思わぬ事故を防ぐために関数定義のたびに
$(function () {
}
で囲いがち。これがそもそも良くないのだろうが。。。
少なくとも、$(window).on('load', function(){});
に限っては$(function () {}
の中で定義するのはやめておいた方が良さそう。思わぬ事故につながるので。
参考文献