是否有一个事件会在 jQuery 中的scrollHeight 或scrollWidth 发生更改时触发?

问题描述 投票:0回答:3

我正在使用 JQuery 设计一个应用程序,用户可以在 div 内拖动元素,该 div 会自动添加滚动条并根据需要扩展滚动高度/滚动宽度。当容器div的scrollHeight和scrollWidth改变时,我需要触发一个even。

不,不想使用滚动事件,因为1)当您开始将元素拖动到边缘并且滚动高度/滚动宽度发生变化时,滚动不会被触发。 2)当scrollHeight/scrollWidth不改变时滚动触发。

有什么提示吗?

javascript jquery scroll
3个回答
11
投票

[免责声明]请注意,此答案的某些部分不再准确。

scrollHeight
scrollWidth
现在是 CSSOM Spec 的一部分,并拥有更广泛的支持 1 2


我认为这样的任务不会得到支持。为什么要有一个?

scrollHeight
scrollWidth
不属于任何 W3C 规范或技术建议,AFAIK 是 MSIE 专有的 DHTML 对象模型扩展。

您可以自己检查,即使 MSDN 页面声明此 MSDN 滚动宽度属性MSDN:scrollHeight 属性没有标准。

大多数浏览器似乎都支持它,但实际上没有人“真正”知道 IE 如何实现它们,因此根据浏览器的不同,您可能会得到不同的行为。

大多数浏览器可能会对 IE 的功能进行有根据的猜测,然后修复用户的“错误报告”。但尤其是 Opera(现在是 Chrome?)已知会报告这两个属性的“不正确”值。


5
投票

我已经在这里回答了这个问题,这可能看起来无关紧要,但它也支持滚动高度更改和滚动宽度。

使用 jQuery 检测 div 高度何时发生变化

插件:

http://www.jqui.net/jquery-projects/jquery-mutate-official/

演示:

$('.selector').mutate('scrollHeight',function (){
    alert('it has changed the scroll height do something about it...');
});

这个插件也应该跨浏览器工作,因为它使用间隔(setTimeout)来检查此类更改,如果您需要它也可以扩展:)

希望有帮助...


0
投票

不,当scrollHeight/scrollWidth更改时会触发事件,但是,您可以将内容包装在包装器div内,并在该内容包装器上使用

ResizeObserver
来检查其大小何时更改,其宽度和高度将是父scrollWidth和滚动高度

© www.soinside.com 2019 - 2024. All rights reserved.