使用$(window).scroll时如何注入一次?
How to inject once when using $(window).scroll?
我想 运行 "window.googletag.pubads().refresh();" 一次 当用户滚动 > 2000 像素时。我该怎么做?例如:
$(window).scroll(function() {
var st = $(this).scrollTop();
var lastScrollTop = 2000;
if (st > lastScrollTop) {
window.googletag.pubads().refresh();
console.log('refresh');
}
});
您可以保留一个全局标志并在每次滚动时检查该值。你可以查看我的版本:
var flag = false;
var lastScrollTop = 2000;
$(window).scroll(function() {
var st = $(this).scrollTop();
if (st > lastScrollTop && !flag) {
window.googletag.pubads().refresh();
console.log('refresh');
flag = true;
}
});
我认为添加名为 flag
的 boolean
数据类型不是很全面,尤其是当 OP 似乎不理解需要 bool 时。它没有告诉他完成这件事需要什么。上面的回答是正确的,但是以后google这个问题的人可能不全面,他们可能不明白你的意思"flag."
不知道何时使用 boolean
数据类型是这里应该解释的更大问题的症状,因此 OP 不会继续无知。
您需要的是 boolean variable。本质上,您想检查某事是否为真。我们已经滚动到该位置了吗?不,让我们触发它。我们已经这样做了吗?然后它不会再次滚动,直到页面刷新。
让我们创建布尔值:var scrolledToPosition = false;
。这个必须放在滚动逻辑外面,否则每次都会重置,不会起作用。
您希望最初将其设置为 false,以便正确触发即将到来的附加逻辑。
然后,在您的 if 语句 if (st > lastScrollTop)
中,您需要添加 && !scrolledToPosition
.
感叹号表示"not." 例如,如果bool scrolledToPosition
等于false,您可以使用!booleanValue
来检查。您可以排除感叹号以检查它是否为真。例如,if (scrolledToPosition)
.
完整代码如下:
var scrolledToPosition = false;
var lastScrollTop = 2000;
$(window).scroll(function() {
var st = $(this).scrollTop();
if (st > lastScrollTop && !scrolledToPosition) {
window.googletag.pubads().refresh();
console.log('refresh');
scrolledToPosition = true;
}
});
如果您需要重置它,只需将 scrolledToPosition
设置为 false
。像这样:
scrolledToPosition = false;
我想 运行 "window.googletag.pubads().refresh();" 一次 当用户滚动 > 2000 像素时。我该怎么做?例如:
$(window).scroll(function() {
var st = $(this).scrollTop();
var lastScrollTop = 2000;
if (st > lastScrollTop) {
window.googletag.pubads().refresh();
console.log('refresh');
}
});
您可以保留一个全局标志并在每次滚动时检查该值。你可以查看我的版本:
var flag = false;
var lastScrollTop = 2000;
$(window).scroll(function() {
var st = $(this).scrollTop();
if (st > lastScrollTop && !flag) {
window.googletag.pubads().refresh();
console.log('refresh');
flag = true;
}
});
我认为添加名为 flag
的 boolean
数据类型不是很全面,尤其是当 OP 似乎不理解需要 bool 时。它没有告诉他完成这件事需要什么。上面的回答是正确的,但是以后google这个问题的人可能不全面,他们可能不明白你的意思"flag."
不知道何时使用 boolean
数据类型是这里应该解释的更大问题的症状,因此 OP 不会继续无知。
您需要的是 boolean variable。本质上,您想检查某事是否为真。我们已经滚动到该位置了吗?不,让我们触发它。我们已经这样做了吗?然后它不会再次滚动,直到页面刷新。
让我们创建布尔值:var scrolledToPosition = false;
。这个必须放在滚动逻辑外面,否则每次都会重置,不会起作用。
您希望最初将其设置为 false,以便正确触发即将到来的附加逻辑。
然后,在您的 if 语句 if (st > lastScrollTop)
中,您需要添加 && !scrolledToPosition
.
感叹号表示"not." 例如,如果bool scrolledToPosition
等于false,您可以使用!booleanValue
来检查。您可以排除感叹号以检查它是否为真。例如,if (scrolledToPosition)
.
完整代码如下:
var scrolledToPosition = false;
var lastScrollTop = 2000;
$(window).scroll(function() {
var st = $(this).scrollTop();
if (st > lastScrollTop && !scrolledToPosition) {
window.googletag.pubads().refresh();
console.log('refresh');
scrolledToPosition = true;
}
});
如果您需要重置它,只需将 scrolledToPosition
设置为 false
。像这样:
scrolledToPosition = false;