Javascript 限制我的页面滚动,使其只跳过一个幻灯片
这似乎是一个很容易的解决办法,但我似乎无法得到它。我需要在JavaScript中限制或取消滚动,以便幻灯片只跳到下一张幻灯片。目前,它正在计算滚动点击的次数,然后滚动那么多幻灯片。我正在WordPress网站上使用revolution slider 我有当前的代码,可以让幻灯片在鼠标上滚动,跳到下一张幻灯片Javascript 限制我的页面滚动,使其只跳过一个幻灯片,javascript,wordpress,scroll,revolution-slider,Javascript,Wordpress,Scroll,Revolution Slider,这似乎是一个很容易的解决办法,但我似乎无法得到它。我需要在JavaScript中限制或取消滚动,以便幻灯片只跳到下一张幻灯片。目前,它正在计算滚动点击的次数,然后滚动那么多幻灯片。我正在WordPress网站上使用revolution slider 我有当前的代码,可以让幻灯片在鼠标上滚动,跳到下一张幻灯片 (函数(){ //将此处的“revapi1”更改为滑块使用的任何API名称(请参见下面的注释) 变量滑块=revapi1; slider.parent().on('mousewheel-D
(函数(){
//将此处的“revapi1”更改为滑块使用的任何API名称(请参见下面的注释)
变量滑块=revapi1;
slider.parent().on('mousewheel-DOMMouseScroll',函数(事件){
if(event.originalEvent.wheelDelta>0 | | event.originalEvent.detail<0){
slider.revprev();
}
否则{
slider.revnext();
}
});
})()
或者,当滑块移动时,可以使用“锁定”锁定事件处理程序:
element.on('mousewheel DOMMouseScroll',function(){
if(!element.hasClass('locked')){
element.addClass('locked');
...//process, move next, move previous
element.removeClass('locked');
}
})
这个很容易理解
完整的:
(function() {
var slider = revapi1;
slider.parent().on('mousewheel DOMMouseScroll',throttle(function(event) {
if(event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) {
slider.revprev();
}else {
slider.revnext();
}
},250));
function throttle(fn, threshhold, scope) {
threshhold || (threshhold = 250);
var last,
deferTimer;
return function () {
var context = scope || this;
var now = +new Date,
args = arguments;
if (last && now < last + threshhold) {
// hold on to it
clearTimeout(deferTimer);
deferTimer = setTimeout(function () {
last = now;
fn.apply(context, args);
}, threshhold);
} else {
last = now;
fn.apply(context, args);
}
};
}
})()
(函数(){
变量滑块=revapi1;
slider.parent().on('mousewheel DOMMouseScroll',throttle(函数(事件)){
if(event.originalEvent.wheelDelta>0 | | event.originalEvent.detail<0){
slider.revprev();
}否则{
slider.revnext();
}
},250));
功能节流阀(fn、阈值保持、范围){
阈值| |(阈值=250);
最后,
延时定时器;
返回函数(){
var context=scope | | this;
var now=+新日期,
args=参数;
如果(上次和现在<上次+阈值){
//坚持住
clearTimeout(延迟计时器);
延迟计时器=设置超时(函数(){
最后=现在;
fn.应用(上下文,args);
},阈值);
}否则{
最后=现在;
fn.应用(上下文,args);
}
};
}
})()
我看不出问题,它正常滑动。你在这段时间内修好了吗?嘿,戈兰,它正常地滚动和滑动,但是如果你在滚轮上做了很大的拖动,它会跳过特定的幻灯片。我想要一个大卷轴只跳过一个幻灯片Hey Jilykate,我必须用上面的代码替换我现有的代码吗?这只是一个选项。有很多方法使你的功能“节流”。我重新编辑了我的答案,你也可以使用上面的锁。我觉得自己像个白痴哈哈!我无法让他们使用我目前拥有的代码。你能把完整的代码一起发布吗?@user3274603(按要求)~非常感谢你,我完全明白你在那里做了什么:)它成功了。有没有什么快速的方法可以将其更改为不延迟,而只是暂停功能?因为它现在放在幻灯片上10秒钟。但在10秒钟结束之前,我不想滚动到其他幻灯片吗?
element.on('mousewheel DOMMouseScroll',function(){
if(!element.hasClass('locked')){
element.addClass('locked');
...//process, move next, move previous
element.removeClass('locked');
}
})
(function() {
var slider = revapi1;
slider.parent().on('mousewheel DOMMouseScroll',throttle(function(event) {
if(event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) {
slider.revprev();
}else {
slider.revnext();
}
},250));
function throttle(fn, threshhold, scope) {
threshhold || (threshhold = 250);
var last,
deferTimer;
return function () {
var context = scope || this;
var now = +new Date,
args = arguments;
if (last && now < last + threshhold) {
// hold on to it
clearTimeout(deferTimer);
deferTimer = setTimeout(function () {
last = now;
fn.apply(context, args);
}, threshhold);
} else {
last = now;
fn.apply(context, args);
}
};
}
})()