【问题标题】:How to get/catch event off screen element?如何获取/捕获屏幕元素外的事件?
【发布时间】:2014-09-30 21:40:14
【问题描述】:

我正在尝试制作固定的表格标题,当您向下滚动并且表格标题离开屏幕时,是否可以捕获事件或捕获元素?

【问题讨论】:

  • 你能给我一些代码吗?例如?
  • 您能与我们分享您的尝试吗?
  • container.addEventListener("scroll", fnDoStuff, true)

标签: javascript jquery


【解决方案1】:

一种方法是对窗口使用滚动事件,并检查元素是否在那里可见。

这里回答了如何检查一个元素是否在屏幕上:Check if element is visible on screen

下面是如何将该代码转换为自定义事件entered_view 和exited_view:

var $element = $('#some_element');
var is_visible = false;

$(window).on('scroll', function (e) {
    // Check if $element is on screen using code from other answer

    if (checkVisible($element)) {
         if (!is_visible) {
             $element.trigger('entered_view');
         }
         is_visible = true;
    } else {
         if (is_visible) {
             $element.trigger('exited_view');
         }
         is_visible = false;
    }
});

一旦你得到它的工作,你可能还想去抖动滚动事件:Here's info about debouncing/throttling in jquery

【讨论】:

  • 你可能想要去抖动,因为滚动每秒可以触发数十次......
  • @dandavis 是的,这绝对正确,只是试图降低答案的简单性/复杂性。编辑以反映
  • 你是对的,很高兴提供代码,我只是想做得更好,以防菜鸟遇到代码并想知道为什么它会阻碍他们糟糕的设备(检测可见性可能很昂贵)...
猜你喜欢
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
相关资源
最近更新 更多