2013-02-22 33 views
0

有人可以告訴我一種方式在HTML文檔中查找瀏覽器窗口中可見的第一段。意思是我希望第一段不在文檔內(可能大於窗口區域),但在瀏覽器窗口(可見屏幕)內。Javascript/jquery在窗口中找到最頂部的段落

* PS不是讓所有的「P」的元素在文檔和遍歷找到其他的第一個可見 *

+2

我懷疑如果不循環所有「p」標記,這是可能的。 – 2013-02-22 13:41:57

+0

有一個[如何對告訴-IF-A-DOM的元素是 - 可見光 - 內式電流視口] [1] [1]:HTTP://計算器。 com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport – 2013-02-22 13:52:36

+0

謝謝你會看到它是否有幫助! – Vegito1044 2013-02-24 05:51:13

回答

0

我認爲這是你想要什麼:

$("p:visible:first") 
+0

如果我理解他的話,他想要在當前可見區域獲取第一個「p」,而不是全部文檔。 jQuery http://api.jquery.com/visible-selector/上的 – 2013-02-22 13:43:15

+0

他們提到「可見元素的寬度或高度大於零。」但是在視口顯示區域內沒有任何可見**的內容。 – 2013-02-22 13:49:12

0

這應該工作:

$(document).ready(function(){ 
    var paragraphs = $('p'); 
    var scrollTop = $(window).scrollTop(); 
    var scrollBtm = scrollTop + $(window).height(); 
    paragraphs.each(function(e){ 
     var top = $(this).offset().top; 
     if (top > scrollTop && top < scrollBtm){ 
      alert("Win"); 
      return false; 
     } 
    }); 
}); 

編輯:我意識到這是traversin g p標籤,但至少在「返回false」的情況下,你不會遍歷每一個,只是當前視圖上方的每一個。

編輯2:創建段落上的document.ready

+0

感謝您的幫助!但隨着用戶向下滾動越來越多,它將需要更多的時間,所以不會在大尺寸的HTML文檔中做得更好 – Vegito1044 2013-02-24 05:55:16

+0

如果您正在尋找距離屏幕頂部最近的p標籤,那麼關於我認爲的唯一選項你有。但是,如果您滾動查看文章,博客條目等,並且想要突出顯示其中一個標籤的頂部p標籤,則可以將其分割爲div或部分標籤以增加搜索時間。 – Aaron 2013-02-25 03:33:40

+0

爲了讓腳本更高效,我能想到的第一件事就是在文檔加載時一次獲取段落的jQuery對象,而不是每次您想檢查(修改我的上述代碼來完成此操作)。除此之外,您還可以在開始時使用jQuery數據函數將偏移頂部座標附加到每個段落,但這些座標可能會根據頁面而改變。 – Maloric 2013-02-25 08:58:11

0

你能想出某種機制根據它們的偏移量來標記你的p標籤。所以,當頁面加載時,你將不得不循環你的p標籤(或更好的部分),並根據它們的偏移位置標記它們。然後,將用戶的當前滾動位置與最近的偏移量p進行比較將是一件簡單的事情...