仅$(window).scroll中最顶层的代码有效

险恶胡须

我有一些代码$(window).scroll可以检查某个元素是否可见,然后触发另一个函数。

但是,只有第一部分代码被触发。这两段代码本身都能工作-如果我调换它们的顺序,则最上面的哪一个都能正确触发。

我的代码如下:

$.fn.isOnScreen = function() {
 "use strict";
 var win = $(window), viewport = {
  top: win.scrollTop(),
  left: win.scrollLeft()
 }, bounds = this.offset();
 viewport.right = viewport.left + win.width();
 viewport.bottom = viewport.top + win.height();
 bounds.right = bounds.left + this.outerWidth();
 bounds.bottom = bounds.top + this.outerHeight();
 return !(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom);
};

$(window).scroll(function() {
 "use strict";

 var load_more_results = $("#ajax-load_more_results").isOnScreen();
 if (load_more_results === true) {LoadMoreResults();}

 var load_more_staff = $("#ajax-load_more_staff").isOnScreen();
 if (load_more_staff === true) {LoadMoreStaff();}
});

我究竟做错了什么?您只能触发一个事件$(window).scroll吗?我认为不是。

险恶胡须

修复它-答案非常简单。JS代码在我的中央js文件中,该文件在每个页面上触发。具有这些ID的DIV仅出现在某些页面上,如果DIV根本不存在,则代码将失败。

我通过将这些事件仅移动到包含那些DIV的页面上来解决了该问题。感谢@ t.niese的JSFiddle,这使我意识到了这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章