2013-09-23 9 views
13

Voglio controllare se un elemento viene fatto scorrere verso l'alto con un offset di ~ 100px.controlla se l'elemento è stato spostato verso l'alto

Ho una pagina con 5 sottocontenuti e 2 classi per creare sfondi. Ecco come si presenta:

<div class="background1"> 
Content1 
</div> 
<div class="background2"> 
Content2 
</div> 
<div class="background1"> 
Content3 
</div> 
<div class="background2"> 
Content4 
</div> 
<div class="background1"> 
Content5 
</div> 

Ora voglio controllare, quando una di queste classi raggiunge la cima scorrendo

Questo è uno dei miei ultimi Trys:

$('.background1', '.background2').position(function(){ 
      if($(this).position().top == 100){ 
      alert('checkThis'); 
     } 
     }); 

penso che questo è il mio tentativo più vicino ormai ... naturalmente questo codice è in document.ready e alla fine del mio codice ....

TLDR: Come verificare se un elemento è stato fatto scorrere verso l'alto (e qualche offset) ?

+1

finestra onscroll sembra essere quello che stai cercando per –

risposta

19

Devi ascoltare l'evento scroll, quindi controllare ogni elemento contro la distanza attualmente scorrere, qualcosa di simile: evento

$(window).on('scroll', function() { 
    var scrollTop = $(this).scrollTop(); 

    $('.background1, .background2').each(function() { 
     var topDistance = $(this).offset().top; 

     if ((topDistance+100) < scrollTop) { 
      alert($(this).text() + ' was scrolled to the top'); 
     } 
    }); 
}); 
+0

Questo lloks su ciò che ho cercato per ... mi sono totalmente concentrato su come ottenere la posizione ... ma ho dimenticato la pergamena per arrivarci ... grazie! Accetta tra 8 minuti. –

+2

'position()' ottiene la posizione degli elementi rispetto al genitore, sto scommettendo che stai cercando 'offset()', che ottiene la posizione relativa al documento. Nota anche il selettore, poiché il tuo selettore cerca '.background1' all'interno di' .background2', e non seleziona entrambi. – adeneo

+0

Fantastico! Questa riga: 'var scrollTop = $ (this) .scrollTop();' era esattamente quello che stavo cercando. Non riuscivo a capire perché il valore massimo .offset(). Non stava cambiando affatto. Ora vedo che il valore di offset è correlato al documento, quindi è permanente - ecco perché è necessario confrontarlo con il valore '$ (window) .scrollTop()'. –