Почему мой оператор 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
всегда буду доволен