簡體   English   中英

僅$(window).scroll中最頂層的代碼有效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM