简体   繁体   English

我的JQuery向下滚动有效,但向上滚动根本不起作用

[英]My JQuery Scroll Down works but scroll up doesn't work at all

I've put in a html several divs with IDs in a row prepended with the letter d, eg: #d1, #d2, #d3... Then i created the javascript code below: 我在html的ID中连续添加了多个div,其中ID排在字母d的前面,例如:#d1,#d2,#d3 ...然后,我在下面创建了JavaScript代码:

    var pos = 0;
$("#button-up").on('click', function(e) {
    e.preventDefault();
    if(pos > 1){
    pos -= 1;
    $("html, body").stop().animate({
        'scrollTop': $("#d"+pos).offset().top-300},200,"swing");
};
});

$("#button-down").on('click', function(e) {
    e.preventDefault();
    if(pos < 10){
    pos += 1;
    $("html, body").stop().animate({
        'scrollTop': $("#d"+pos).offset().top-300},200,"swing");
};
});
    window.addEventListener("scroll", function(event) {
var posi = this.pageYOffset;
if(posi-(pos-1)*1070+50 >= 1070){pos += 1} else if((pos-1)*1070+50-posi <= -1070){pos -= 1};
});

Finally my site scrolls down when i click the button-down, but i need to click twice the button-up for it scrolls up. 最终,当我单击向下按钮时,我的网站向下滚动,但是我需要单击两次向上按钮才能向上滚动。 Why? 为什么? Is there a better way than this that gets the expected result? 有没有比这更好的方法来获得预期的结果?

I made it work changing this part: 我通过更改此部分使其工作:

 window.addEventListener("scroll", function(event) {
var posi = this.pageYOffset;
if(posi-(pos-1)*1070+50 >= 1070){pos += 1} else if((pos-1)*1070+50-posi <= -1070){pos -= 1};
 });

with this one: 与此:

     window.addEventListener("mousewheel", function(e) {
    e.preventDefault();
    console.log('passou por 6');
    var evt = window.event || e //equalize event object     


    evt = evt.originalEvent ? evt.originalEvent : evt; //convert to originalEvent if possible               
    var delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta //check for detail first, because it is used by Opera and FF

if(delta > 0) {
    if(pos > 1){
            console.log('passou por 3');
            pos -= 1;
            $("html, body").stop().animate({
                'scrollTop': $("#d"+pos).offset().top-300},200,"swing");
            };
    //scroll up
    console.log('cima');
}
else{
    if(pos < 10){
            pos += 1;
            $("html, body").stop().animate({
                'scrollTop': $("#d"+pos).offset().top-300},200,"swing");
        };
    console.log('baixo');
    //scroll down
}; 
});

Use jquery scoll function 使用jQuery scoll函数

$(window).scroll(function(event){ 
    // your code
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM