2010-06-01 40 views
14

div元素没有onscroll事件处理程序吗? 我的页面上的行为似乎并没有表明识别事件处理程序div onscrollonscroll for div

<div id='bd' onscroll='alert("Scroll Called");'></div> 

此外,
做的div滚动事件卷起窗口滚动的事件,按照DOM事件冒泡?

回答

2

是的,但元素需要有一个滚动条。你可以给它一个overflow: auto(当内容足够高的时候给你一个滚动条)或者overflow: scroll。 (这些可以被专门设置为x & y以及overflow-y: scroll ...)

尽管当div被滚动到底部时它们不起泡,窗口将开始滚动。 (基本上,如果div可以滚动它将拦截滚动事件,但如果它不能,那么它将进入页面)

+5

谢谢。但是,我有溢出属性集。我正在滚动div,但没有得到任何警报。我可能做错了什么? – 2010-06-01 18:52:28

1

我知道它可能不是你正在寻找的,但很多JavaScript框架可以帮助你做到这一点。 div没有必要有一个滚动条让你钩住滚动事件。

例如, Mootools有mousewheel事件。 Demo here。 (它有滚动条,但可以使用Firebug删除滚动条并尝试 - 它仍然有效)。

我已经使用这个我自己在site我做了一段时间。如果在将鼠标放在图像上方的同时进行滚动,则会阻止默认页面滚动,而是滑动图像栏。

12

取决于您使用的HTML版本,您可以使用onwheel事件。

onscroll事件只能如果所有下列条件:

  1. 的div有overflow: autooverflow: scrolloverflow-y: scroll
  2. 股利目前有一个明显的滚动条可以滚动。
  3. 鼠标移动实际上会导致滚动条滚动。

因此,onscroll事件并不真正适用于检测一般鼠标轮的移动。

请注意,onwheel事件是HTML 5中的新事件。但它受到相当广泛的支持。

4

我也在这个问题上摸不清头脑,直到我开始更多地了解DOCTYPE指令。 onscroll属性在HTML规范的最新版本中不受支持。它将在Visual Studio中显示为无效的语法。它可能在许多浏览器中工作,但它仍然是无效的代码。

相反,你可以使用Javascript或jQuery开展事件。我使用这种方法来同步两个单独的div上的滚动:

$("#gridTableContainer").scroll(function() { 
    HandlingScrollingStuff(); 
}); 
+0

你不应该相信微软所说的关于规格的一切。他们喜欢自己做,他们喜欢称他们为标准。而VS让你感觉像Word一样,是“正确的”和“有效的” - 根据MS_。实际上,只有MS最终依靠DOCTYPE才能做出怪癖;所有其他浏览器都只是显示HTML。 [使用MDN学习HTML,CSS和JS](https://developer.mozilla.org/en/docs/DOM/window.onscroll)!切勿使用w3schools,请阅读[w3fools.com](http://w3fools.com)上的原因。 MSDN对IE来说可以,但不要依赖它们。 ps:onscroll事件是HTML5规范,没有jQuery。 – metadings 2013-05-17 06:31:39

+1

嗯,是的。即使Visual Studio将其显示为有效,上面提到的“仍然无效”时我就是这么说的。 – Ripside 2014-04-30 17:08:38

0

JQUERY scroll()可以帮助您。

$("#gridTableContainer").scroll(function() { 
    HandlingScrollingStuff(); 
});