Jquery 如何在使用$(窗口)时注入一次。滚动?

Jquery 如何在使用$(窗口)时注入一次。滚动?,jquery,scroll,google-dfp,Jquery,Scroll,Google Dfp,当用户滚动>2000px时,我想运行一次“window.googletag.pubads().refresh();”。我该如何正确地做呢?例如: $(window).scroll(function() { var st = $(this).scrollTop(); var lastScrollTop = 2000; if (st > lastScrollTop) { window.googletag.pubads().refresh();

当用户滚动>2000px时,我想运行一次“window.googletag.pubads().refresh();”。我该如何正确地做呢?例如:

    $(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的需要时。它没有告诉他需要什么来完成这件事。上面的答案是正确的,但对于将来在谷歌上搜索这个问题的人来说,这可能并不全面,他们可能不理解你所说的“国旗”是什么意思

不知道何时使用
boolean
数据类型是这里需要解释的更大问题的症状,因此OP不会继续无知

你需要的是一份工作。本质上,你需要检查事情是否属实。我们已经滚动到该位置了吗?不,让我们触发它。我们已经这么做了吗?然后,在刷新页面之前,它不会再次滚动

让我们创建bool:
var scrolledToPosition=false。这必须放在滚动逻辑之外,否则每次都会被重置,并且无法工作

您希望最初将其设置为false,以便接下来的附加逻辑将正确启动

然后,在if语句中,
if(st>lastcrolltop)
,您需要添加
&&&!滚动位置

感叹号的意思是“不”。例如,如果
bool scrolledToPosition
等于false,您可以使用
来检查这一点!布尔值
。您可以排除感叹号以检查它是否为真。例如,
if(滚动位置)

以下是完整的代码:

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;
    }
});
如果需要重置,只需将
scrolled位置设置为
false
。像这样:

scrolledToPosition = false;

感谢您的深入解释!不客气。如果这回答了您的问题,并且是正确的,请检查我们的答案之一作为正确的解决方案。