Почему мой оператор if продолжает работать?

Я пытаюсь сделать прокрутку браузера до точки на странице, если страница прокручивается вниз. Я использую jQuery .bind() связывать html в mousewheel, Вот мой код:

"use strict";
var scrollpoint = 1;
$(document).ready(function(){
    console.log(scrollpoint);
    $("#divacon").hide();
    $("#divbcon").hide();
    $('#div-a').waypoint(function() {
            $("#divacon").fadeIn();
            var scrollpoint = 2;
            console.log("waypoint a reached");
    },{context:"#container"});
    $('#div-b').waypoint(function() {
            $("#divbcon").fadeIn();
            console.log("waypoint b reached");
    },{context:"#container"});

а также

$('html').bind('mousewheel', function(e){
    var flag = true;
    if(flag) {
        if(e.originalEvent.wheelDelta < 0) {
            if((scrollpoint == 1)) {
                var target = $('#div-a');
                target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
                var targetoffset = target.offset().top;
                console.log(scrollpoint);
                $('#container').animate(
                    {scrollTop: targetoffset},
                    400,
                    function(){
                        var scrollpoint = 2;
                        console.log(scrollpoint);
                    }
                );
            }
            else if((scrollpoint = 2)){
                //scroll down
                console.log('2');
            }
            else{
                //scroll down
                console.log('Down');
            }
        }else {
            //scroll up
            console.log('Up');
        }
    //prevent page fom scrolling
    flag = false;
    }
});

Происходит то, что мое заявление if вызывается после первого раза, даже когда flag = false;, Что я делаю неправильно? Сайт можно найти в прямом эфире на http://wilsonbiggs.com/sandy

1 ответ

Решение

Я думаю, что это должно быть

var flag = true; //put the flag out side mouse wheel bind.

$('html').bind('mousewheel', function(e){

    if(flag) {

В противном случае каждый раз, когда ваши четные триггеры вы устанавливаете flag в true и следующее if condition всегда буду доволен

Другие вопросы по тегам