Javascript Jquery滚动插件只向下滚动

Javascript Jquery滚动插件只向下滚动,javascript,jquery,html,events,scroll,Javascript,Jquery,Html,Events,Scroll,我用jquery制作了一个插件,它利用了鼠标滚动事件。 问题是,即使我向上滚动,它也会向下滚动 这是我的密码 HTML: 不知何故,当我滚动代码时,代码总是出现在else语句console.log('down') 此代码中的公式delta/120>0是否错误 检查当前scrollTop与上一个scrollTop var lastScrollTop = 0; $(window).scroll(function(event){ var st = $(this).scrollTop();

我用jquery制作了一个插件,它利用了鼠标滚动事件。 问题是,即使我向上滚动,它也会向下滚动

这是我的密码

HTML:

不知何故,当我滚动代码时,代码总是出现在else语句console.log('down')


此代码中的公式delta/120>0是否错误

检查当前scrollTop与上一个scrollTop

var lastScrollTop = 0;
$(window).scroll(function(event){
   var st = $(this).scrollTop();
   if (st > lastScrollTop){
       // downscroll code
   } else {
      // upscroll code
   }
   lastScrollTop = st;
});

检查当前scrollTop与上一个scrollTop

var lastScrollTop = 0;
$(window).scroll(function(event){
   var st = $(this).scrollTop();
   if (st > lastScrollTop){
       // downscroll code
   } else {
      // upscroll code
   }
   lastScrollTop = st;
});
我的解决方案:

/**
 * Plugin that makes the screen scroll particular component visible on the screen
 */
$.fn.scrollTo = function() {
    var isVisibleOnScreen = function(elem) {
        var docViewTop = $(window).scrollTop();
        var docViewBottom = docViewTop + $(window).height();
        var elemTop = $(elem).offset().top;
        var elemBottom = elemTop + $(elem).height();

        return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
    };

    if(!isVisibleOnScreen(this)){
        $('html, body').animate({
            scrollTop: $(this).offset().top + 'px'
        }, 'fast');
        return this; // for chaining...
    }
};
/**
*使屏幕滚动特定组件在屏幕上可见的插件
*/
$.fn.scrollTo=函数(){
变量isVisibleOnScreen=功能(elem){
var docViewTop=$(window.scrollTop();
var docViewBottom=docViewTop+$(window).height();
var elemTop=$(elem).offset().top;
var elemBottom=elemTop+$(elem).height();
返回((elemBottom=docViewTop));
};
如果(!屏幕上可见(此)){
$('html,body')。设置动画({
scrollTop:$(this).offset().top+'px'
}“快”);
返回此;//用于链接。。。
}
};
用法:

$('#top')。滚动到()

我的解决方案:

/**
 * Plugin that makes the screen scroll particular component visible on the screen
 */
$.fn.scrollTo = function() {
    var isVisibleOnScreen = function(elem) {
        var docViewTop = $(window).scrollTop();
        var docViewBottom = docViewTop + $(window).height();
        var elemTop = $(elem).offset().top;
        var elemBottom = elemTop + $(elem).height();

        return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
    };

    if(!isVisibleOnScreen(this)){
        $('html, body').animate({
            scrollTop: $(this).offset().top + 'px'
        }, 'fast');
        return this; // for chaining...
    }
};
/**
*使屏幕滚动特定组件在屏幕上可见的插件
*/
$.fn.scrollTo=函数(){
变量isVisibleOnScreen=功能(elem){
var docViewTop=$(window.scrollTop();
var docViewBottom=docViewTop+$(window).height();
var elemTop=$(elem).offset().top;
var elemBottom=elemTop+$(elem).height();
返回((elemBottom=docViewTop));
};
如果(!屏幕上可见(此)){
$('html,body')。设置动画({
scrollTop:$(this).offset().top+'px'
}“快”);
返回此;//用于链接。。。
}
};
用法:

$('#top')。滚动到()

我这样做:

$.extend(Plugin.prototype, {
    init: function () {

        var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel';

        if (document.attachEvent){
            document.attachEvent('on'+mousewheelevt, function(e){scroller(e)});
        }
        else if (document.addEventListener){
            document.addEventListener(mousewheelevt, function(e){scroller(e)},false);
        }

        function scroller(evt)
        {
            //Guess the delta.
            var delta = 0;

            if (!evt) evt = window.event;
            if (evt.wheelDelta) {
                delta = evt.wheelDelta/120;
            }
            else if (evt.detail) {
                delta = -evt.detail/3;
            }

            if(delta /120 > 0){
                console.log('up');
            }

            else{
                console.log('down');
            }
        }
    }
});
我这样做:

$.extend(Plugin.prototype, {
    init: function () {

        var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel';

        if (document.attachEvent){
            document.attachEvent('on'+mousewheelevt, function(e){scroller(e)});
        }
        else if (document.addEventListener){
            document.addEventListener(mousewheelevt, function(e){scroller(e)},false);
        }

        function scroller(evt)
        {
            //Guess the delta.
            var delta = 0;

            if (!evt) evt = window.event;
            if (evt.wheelDelta) {
                delta = evt.wheelDelta/120;
            }
            else if (evt.detail) {
                delta = -evt.detail/3;
            }

            if(delta /120 > 0){
                console.log('up');
            }

            else{
                console.log('down');
            }
        }
    }
});

当我向下滚动时,第一条规则是我在控制台中得到的。。当我向上滚动时,我在控制台中得到了所有标记在这里的其他行。。我只向下滚动了一次,然后又向上滚动了一次,当我向下滚动时,第一条规则就是我在控制台中得到的。。当我向上滚动时,我在控制台中得到了所有标记在这里的其他行。。我只向下滚动了一次,然后又向上滚动了一次,因为您的增量始终等于0。”event.wheelDelta和event.detail未定义。您应该附加“onmouseheel”listener.its,因为您的增量始终等于0event.wheelDelta和event.detail未定义。你应该附加“onmouseheel”侦听器。浏览器嗅探不是很好。现在有一个更好的活动:。浏览器嗅探不是很好。现在有一个更好的活动:。