我在$(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
发起一个事件吗?我不假设。
您是否在控制台中看到任何错误消息?我很确定这个错误在'LoadMoreResults'和'LoadMoreStaff'函数中。 – 2015-03-03 08:49:02
每个用户滚动滚动事件不止一次(实际上很多,取决于浏览器)。我没有看到任何明显错误的东西。你能提供一个可以重现问题的jsfiddle吗? – peterdotjs 2015-03-03 08:49:09
jsfiddle将很好的看待问题 – mohamedrias 2015-03-03 08:54:30