Question Comment détecter quand l'utilisateur a fait défiler une certaine zone de la page en utilisant jQuery? [dupliquer]


Duplication possible:
Comment détecter le défilement de la page à un certain point dans jQuery?
  Vérifiez si l'élément est visible après le défilement 

Comment puis-je détecter quand l'utilisateur a atteint cette div:

<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />

<div id="theTarget">I have been reached</div>

MODIFIER

Vous avez la réponse à cette question:

Vérifiez si l'élément est visible après le défilement

Donc je viens de faire ça:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();
    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();
    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom) && (elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

$(window).scroll(function() {    
    if(isScrolledIntoView($('#theTarget')))
    {
        alert('visible');
    }    
});

28
2017-08-24 21:12


origine


Réponses:


$(document).on('scroll', function() {
    if($(this).scrollTop()>=$('#theTarget').position().top){
        yourActionHere();
    }
})

Comparez le défilement et la position de votre élément. Alors appelez votre fonction. Aucun plugin requis.


39
2017-08-24 21:18



Je pense que vous pouvez atteindre votre objectif en comparant les valeurs de votre position div

var divPosition = $("#theTarget").offset().top;

et la position de défilement de la fenêtre

var scrollPosition = window.scrollY;

5
2017-08-24 21:21



Il y a un plugin jquery apparaissant qui fait exactement ce que vous demandez.

http://plugins.jquery.com/project/appear

$('#theTarget').appear(function() {
  $(this).text('Hello world');
});

Il est également lié au redimensionnement, à la taille initiale de la fenêtre, etc., etc., etc.


4
2017-08-24 21:23