jquery.on scroll ne fonctionne pas

J’essaie de créer un enregistreur d’événements DOM pour pouvoir lire comment un utilisateur a interagi avec une page. J’aimerais utiliser la fonctionnalité jquery.on pour pouvoir enregistrer tous les événements sur la page. Dans ce cas particulier, j’essaie d’enregistrer des événements de défilement, mais je souhaite finalement enregistrer toutes sortes d’événements.

Voici un lien vers mon JS Fiddle. Je m’attends à ce que le texte “Bonjour” devienne “Au revoir” après qu’un utilisateur a fait défiler la div.

http://jsfiddle.net/MnpPM/

Herel est le html

Hello

et ici le javascript

 $(document).on('scroll', '*', function () { $(this).html('Bye') }); 

l’événement de scroll ne se propageant pas par le biais de dom, vous ne pouvez donc pas l’utiliser avec un délégué.

si vous souhaitez écouter l’événement de scroll , vous devez append le rappel directement à l’élément:

 $(function() { $("#parent").on('scroll', function () { $(this).html('Bye') }); }); 

Comme t.niese l’a dit, utiliser mouseenter et mouseleave peuvent être une option pour vous ou toute autre personne ayant des exigences similaires, j’ai modifié le code jsfiddle, afin que cela puisse donner une indication de la personne qui lit, sachez qu’il ya un buggy mais que vous comprenez le bon .

http://jsfiddle.net/MnpPM/30/

Voici le code:

 var scrollCount = 0; $('body').on('mouseenter','*',function(e){ console.log('mouseenter'); $(this).scroll(function(){ scrollCount++; console.log('Current Count:'+scrollCount); }); $(this).mouseout(function() { $(this).unbind(); }); }); 

J’ai utilisé un code similaire pour un div à défilement chargé dynamicment et qui a fonctionné.