我试图在用户滚动到某一点(距离顶部1250px)时,脚本将运行一个函数“只是ONCE”,然后当用户滚动更多直到另一个1250px之前(2500px)从顶部开始,脚本将再次运行该函数。
然而,我的脚本在1250 px之后继续运行该函数,我已经将另外1250添加到var current_post,所以此时,var current_post应为2500,如果var offset为1600,则该函数不应运行,但它一直在运行。
的Javascript
$(window).scroll(function() {
var offset = $(window).scrollTop();
var current_pos = 1250;
if(offset > current_pos) {
current_pos += 1250;
//do some function
}
});
请帮助我发现我的错误并纠正我对此的理解......请提前。
答案 0 :(得分:2)
将var current_pos=1250
放在scroll
事件之外,如下所示:
var current_pos = 1250; //paste it here
$(window).scroll(function() {
var offset = $(window).scrollTop();
if(offset > current_pos) {
current_pos += 1250;
//do some function
}
});
答案 1 :(得分:2)
问题在于,每次触发事件时,您都将current_pos
设置回1250.所以您永远不会使用更新的值。
尝试在事件处理程序之外设置current_pos
变量,因此每次事件都不会将其重新分配到1250。
var current_pos = 1250;
$(window).scroll(function() {
var offset = $(window).scrollTop();
if(offset > current_pos) {
current_pos += 1250;
//do some function
}
});
答案 2 :(得分:0)
只需输出变量:
// assuming commonJS but it can also be used in the browser directly
var Hook = require('./Hook');
var hook = new Hook();
var socket = io.connect("http://myServer.com");
hook
.attach(socket)
.bindSocket(socket) // enables 'send(message, data)' instead of 'sendTo(socket, message, data)' and 'sendHello' instead of 'sendHelloTo'
.sendHello({token: '123456789abcdefg'})
.then(function (message) {
console.log("Successful hello", message);
hook
.send('myEvent', {payload: '123'})
.then(function (message) {
console.log("Successful hook", message);
})
.catch(function (err) {
console.log("failed hook", err);
});
})
.catch(function (err) {
if (err === hook.TIMEOUT) {
// timeout
}
else {
console.log("hello failed", err);
}
});