Javascript Jquery滚动插件只向下滚动
我用jquery制作了一个插件,它利用了鼠标滚动事件。 问题是,即使我向上滚动,它也会向下滚动 这是我的密码 HTML: 不知何故,当我滚动代码时,代码总是出现在else语句console.log('down')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();
此代码中的公式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”侦听器。浏览器嗅探不是很好。现在有一个更好的活动:。浏览器嗅探不是很好。现在有一个更好的活动:。