如何确定事件是从滚动条触发的

7
我有一个div,其中我实现了类似iPad的滑动效果。可以在JSFiddle上查看我的意思(只需在div中单击并拖动鼠标即可)。
我希望在有人使用滚动条时(单击滚动条,然后从左到右移动),防止发生滑动。
简而言之,我需要在任何事件触发器中使用if(!event.wasTriggeredFromScrollbar)(在这种情况下是mousedown/move/up)。
欢迎使用jQuery和常规的JavaScript答案。
编辑:为了更加清晰明了。

你尝试过获取用户点击/触摸的位置并与滚动条的位置进行比较吗?虽然不容易。 - Mic
@muistooshort 不完全是,它在 JSFiddle 上 [链接](http://jsfiddle.net/k4KP9/)上。 - MatthewKremer
<div class=".panel" 是不正确的。类名 'panel' 的选择器应该是 '.panel'。点号(.)表示它是一个类名而不是例如id(#)…所以你需要 <div class="panel" 来使用 .panel 作为选择器。 - rlemon
@rlemon 这只是一个打字错误,我的错。在我所有真正的脚本中,我都使用它正确。 - MatthewKremer
1个回答

4
这是我遇到的情况,并且似乎没有解决方法。以下是解决方案: 步骤1:捕获MouseDown事件。将scrollLeft和scrollTop的当前位置存储到变量中。 步骤2:MouseMove事件上,检查scrollLeftscrollTop的当前位置,并将其与您的变量进行比较。如果它们不同,则取消您要执行的任何操作。如果它们相同,则MouseDown事件不是由滚动条(或任何其他会更改scrollLeft和scrollTop的东西,例如另一个动画)触发的,因此您可以自由地进行操作!
祝编码愉快!

请注意,scrollLeft和scrollTop是实际元素的属性,而不是事件的属性。 - Lukas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接