Estoy tratando de ejecutar un fragmento de código solo una vez cuando se desplaza a:

$('#main_nav').addClass('past-scrollpoint');
$('#content-block').addClass('past-scrollpoint-content');
$('#header').addClass('hidden');

Sin embargo, el código parece estar inactivo una vez que el punto es inferior a 740.

Aquí está mi mejor intento:

$(window).on('scroll', function()
{
  var initial = 0;
  stop = Math.round($(window).scrollTop());
  if (initial < 1)
  {
    if (stop > 740)
    {
      initial = initial + 1;
      $('#main_nav').addClass('past-scrollpoint');
      $('#content-block').addClass('past-scrollpoint-content');
      $('#header').addClass('hidden');
    }
  }
);
1
Jamus 28 ago. 2014 a las 15:46

2 respuestas

La mejor respuesta

¿Desea que ese fragmento de código se ejecute solo una vez cuando se desplaza a 740 o más? Para esto, creo que tu código está bien. Solo necesita tener algunas pequeñas modificaciones: -

$(window).on('scroll', function(){

var initial = 0;
while(initial<1)
{
stop = Math.round($(window).scrollTop());

if (stop >= 740)
 {      
  $('#main_nav').addClass('past-scrollpoint');
  $('#content-block').addClass('past-scrollpoint-content');
  $('#header').addClass('hidden');
  initial = initial + 1;
 }
}
});

Espero que esto ayude !!

1
Tushar Raj 28 ago. 2014 a las 12:33

No estoy seguro, pero creo que está anulando la variable inicial cada vez. Usar variable global.

var initial = 0;
$(window).on('scroll', function()
{
  stop = Math.round($(window).scrollTop());
  if (initial < 1)
  {
    if (stop > 740)
    {
      initial = initial + 1;
      $('#main_nav').addClass('past-scrollpoint');
      $('#content-block').addClass('past-scrollpoint-content');
      $('#header').addClass('hidden');
    }
  }
);
4
Kartikeya Khosla 28 ago. 2014 a las 11:51