使用$(window).scroll时如何注入一次?

时间:2015-09-25 15:10:47

标签: jquery scroll google-dfp

我想运行“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');
    }
});

2 个答案:

答案 0 :(得分:2)

我不认为添加名为boolean的{​​{1}}数据类型非常全面,尤其是当OP似乎不了解bool的需要时。它没有告诉他他需要做什么才能完成。上面的答案是正确的,但对将来搜索这个问题的人来说可能并不全面,他们可能不明白你的“旗帜”是什么意思。

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

您需要的是boolean variable。基本上,你想检查某些事情是否真实。我们已经滚动到这个位置了吗?不,所以让我们触发吧。我们已经这样做了吗?然后它将不会再次滚动,直到刷新页面。

让我们创建一个bool:boolean。这必须放在滚动逻辑的外部,否则它将每次都重置,并且不起作用。

您希望最初将其设置为false,因此即将推出的附加逻辑将正确启动。

然后,在您的if语句var scrolledToPosition = false;中,您需要添加if (st > lastScrollTop)

感叹号的意思是“不是”。例如,如果&& !scrolledToPosition等于false,则可以使用bool scrolledToPosition进行检查。您可以排除感叹号以检查是否为真。例如,!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

答案 1 :(得分:1)

每次滚动时都可以保留全局标志并检查该值。你可以查看我的版本:

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;
   }
});