2014-09-11 54 views
0

我需要響應用戶手動滾動具有滾動條的元素。只有*用戶*滾動元素纔會觸發的事件?

不幸的是,scroll事件在幾個不同的情況相同的元素上發生

  • 當用戶滾動的元素(只有一個我感興趣的);
  • 當用戶調整窗口大小並且元素的滾動位置間接改變時;
  • 當用戶改變頁面的縮放並且元素的滾動位置間接改變時;
  • 當代碼以編程方式更改元素的scrollTop位置時。

有沒有什麼辦法來隔離只有第一種情況,並有一個處理程序觸發器,只有當用戶實際上字面滾動元素?

回答

0

我不知道它是不是您要找的,但如this page中所述,您可以檢查event.target以驗證您的滾動是否位於想要的元素上。

+0

事件目標在我列出的所有情況下都是一樣的,所以不,我不能用它來辨別它們。 – Timwi 2014-09-11 12:31:25

+0

事件目標是否都像[Object HTMLElement]?如果是的話,你嘗試比較JSON.stringify(event.target)? – Hotted24 2014-09-11 12:35:28

+0

谷歌瀏覽器實際上顯示了當你去'console.log(e.target)'時的實際元素,所以我可以告訴它是相同的元素。 – Timwi 2014-09-11 12:38:12

0

您可以通過preventDefault()儘可能防止滾動事件的冒泡。因此,如果您在控件上註冊滾動事件(j-query),並防止冒泡到其他控件,我認爲是要解決你在找什麼。

+0

這將是一個工作我相信,但相當醜陋的事情... – Hotted24 2014-09-11 12:36:14

+1

對不起,我的問題與冒泡有什麼關係?我沒有看到連接。 – Timwi 2014-09-11 12:37:01

+0

盡我所能理解的問題是,只有在滾動元素時才需要觸發事件?因此,如果您正在滾動元素並停止冒泡,其他控件將不會被通知事件。 – Hristo 2014-09-11 12:38:24