[英]Only the topmost code in $(window).scroll is working
我在$(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,這使我意識到了這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.