2014-12-23 3 views
1

В принципе, я хочу иметь определенные точки на своем веб-сайте, которые действуют как «магниты». Если вы находитесь рядом с одним из них, окно должно прокручиваться вверх, подобно этому плагину jQuery: http://benoit.pointet.info/stuff/jquery-scrollsnap-plugin/jQuery не регулирует положение прокрутки

Проблема заключается в том, что окно не прокручивается, даже если страница находится в диапазоне от " магнит".

здесь является JQuery:

$(document).ready(function() { 

var magnets = []; 
var range = 200; 
var active = true; 

$('.container').each(function(i,obj) { 
    magnets.push($(this).offset().top); 
}); 

console.log(magnets); 

var attract = function(where,time){ 
    $('html, body').animate({ 
     scrollTop: where 
    }, time); 
    active = false; 
}; 

//checks the range of a magnet 
var magnetic = function(what){ 
    var top = $(window).scrollTop(); 
    var min = top - range; 
    var max = top + range; 

    if((min <= what) && (max >= what)){ 
     return true; 
    } else{ 
     return false; 
    } 
} 

//returns, wether you are in range of a magnet from your magnets array or not 
var inRange = function(){ 
    var magnet = -1; 

    for(var i=0; i<magnets.length; i++){ 
     if(magnetic(magnets[i]) == true){ 
      magnet = i; 
     } 
    } 
    return magnet; 
} 

$(window).scroll(function() { 

    $('.counter').html(""); 

    $('.counter').append("<p>"+inRange()+"</p>"); 

    if(active == true && inRange != -1){ 
     attract(magnets[inRange()]); 
    } 
    else if(active == false && inRange() == -1){ 
     active = true; 
    } 
    else if(active == true && inRange() == -1){ 
     console.log("fuck"); 
    } 
}); 
}); 

альтернатива codepen ссылка: http://codepen.io/NiclasvanEyk/pen/jEMrZr

ответ

0

Существует ошибка в коде:

if(active == true && inRange != -1){ 
    attract(magnets[inRange()]); 
} 

Должно быть

if(active == true && inRange() != -1){ 
    attract(magnets[inRange()]); 
}