[英]How to modify Jquery auto scroll parameter during screen resize event?
[英]Scroll event using old value after screen resize
希望您一切顺利,并祝您新年快乐。
我正在尝试用jquery完成一件简单的事情。 我想要一个在加载时被调用,调整大小并在其中具有滚动事件侦听器的函数。 加载时,此函数设置一个标志,该标志在scroll事件内部用于进行一些计算。
这是我的代码:
jQuery的
function rezval() {
var alpha = false;
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
//Some calculations here
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true; //Updating flag
});
}
$(window).resize(function() {
rezval();
});
$(window).load(function() {
rezval();
});
HTML
<div id="output" class="output-div"></div>
CSS
body {
height:2000px;
background:#333;
overflow-x:hidden;
}
.output-div {
font-size:14px;
color:#fff;
width:1000px;
}
我希望此函数在每次调用/调用时将变量'alpha'的值设置为false(最初),并在滚动事件结束时更新flag的值(我稍后将if条件用于该标志计算)。 我输出的alpha值只是为了突出问题。
当我第一次运行加载功能时,它运行完美。 我得到以下输出:
false true true true...
当我调整窗口大小时,问题来了。 我得到的输出是这样的
true false false false true true true.....
我无法理解为什么显示
1)如果为false,则作为第一个输出为true。 就像滚动事件正在缓存变量并重新调用它一样
2)当输出中应该只有一个时出现多个false
我还设置了一个jsFiddle来复制此问题: http : //jsfiddle.net/5dj0jLwn/
任何帮助,将不胜感激。 非常感谢。
您需要全局初始化您的alpha variable
,例如,
var alpha = false; // alpha is global here, now
function rezval() {
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
//Some calculations here
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true; //Updating flag
});
}
// also you need to reinit again in resize function
$(window).on('resize', function() {
alpha = false;
rezval();
}).resize();
var alpha = false; function rezval() { document.getElementById('output').innerHTML = ''; window.addEventListener('scroll', function(e){ document.getElementById('output').innerHTML += alpha + '\\r'; alpha = true; }); } $(window).on('resize', function() { alpha = false; rezval(); }).resize();
body { height:2000px; background:#333; overflow-x:hidden; } .output-div { font-size:14px; color:#fff; width:1000px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div id="output" class="output-div"></div>
试试这个
var alpha = false;
function rezval() {
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true;
});
}
$(window).on('resize', function() {
alpha = false;
rezval();
}).resize();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.