スクロールイベントで問題が発生しています。
イベントを特定のdivにアタッチ/バインドしようとしています。ソートするときにコンテンツがリロードされるため、バインディングが失われるため、$('body').on()
を使用しています。
これは機能せず、イベントは発生しません:
$('body').on('scroll', 'div.dxgvHSDC + div', function () {
}
一方、これは機能します:
$('body').on('mousewheel DOMMouseScroll', 'div.dxgvHSDC + div', function () {
}
そしてこれも:
$('div.dxgvHSDC + div').on('scroll', function () {
}
どうしたの?
scroll
イベントに委任を追加することはできません。このイベントはDOMをバブルアップしないため、任意の要素に委任することはできません。あなたはより多くの情報を見つけることができます ここ :
スクロールイベントが発生しません。
イベントはバブルしませんが、ユーザーがページ全体をスクロールすると、ブラウザーはドキュメントとウィンドウの両方でスクロールイベントを発生させます。
スクロール要素を作成するイベント内にイベントハンドラーを作成する必要があります。
生きている例: http://jsfiddle.net/Um5ZT/1/
$('#link').click(function(){
//dynamically created element
$('body').append('<div class="demo"></div>');
//dynamically added event
$('.demo').on('scroll', function () {
alert('scrolling');
});
});
最新のブラウザ(IE> 8)では、scroll
イベントをキャプチャして、動的要素のdocument
レベルにすることができます。 jQueryはキャプチャ段階を実装していないため、javascript addEventListener()
メソッドを使用する必要があります。
document.addEventListener(
'scroll',
function(event){
var $Elm = $(event.target);
if( $Elm.is('div.dxgvHSDC + div')){ // or any other filtering condition
// do some stuff
console.log('scrolling');
}
},
true // Capture event
);