コンテンツの長さに応じてスクロール バーを使用する要素にスクロール イベントをバインドする場合、スクロール バーを必要としない新しいコンテンツで要素を更新する前に部分的にスクロールすると、スクロール イベントが発生しているように見えます。
説明するのが少し難しいので、次の例をまとめました。
var searchList = $('#search-list');
searchList.on('scroll', function() {
console.log('scrollHandler...');
});
$('#reload').on('click', function() {
console.log('reloadSearchList...');
searchList.html('Updated content.');
});
「奇妙な」動作を再現するには、次の手順に従ってください。
テスト 1 (期待どおりに正常に動作します):
- スクロール バーには触れずに、「リロード ボタン」をクリックしてください。リロード ボタンのハンドラーのみがトリガーされます。
テスト 2 (スクロール イベントがトリガーされるため、動作がおかしい):
- リストを少し下にスクロールします。
- 「リロードボタン」をクリックします。
これは意図したとおりに機能していますか、それともバグですか?