Javascript JQuery e.offsetX跳转值问题
我正在开发一个视频进度条,它应该具有搜索功能(拖动或单击搜索),我遇到的问题相当令人困惑,与进度条的拖动功能有关 拖动时,进度标记将从鼠标位置移动到进度条的开始位置,而不是保持其靠近鼠标位置的正确位置 这个问题的一个演示是可用的 注意:释放鼠标后,不要担心滴答器无法保持其值,我的问题与用户在进度条上拖动鼠标时滴答器返回0%有关。解决方案 在不更改标记的情况下,检查触发器(该单词是否存在?)是否为Javascript JQuery e.offsetX跳转值问题,javascript,jquery,Javascript,Jquery,我正在开发一个视频进度条,它应该具有搜索功能(拖动或单击搜索),我遇到的问题相当令人困惑,与进度条的拖动功能有关 拖动时,进度标记将从鼠标位置移动到进度条的开始位置,而不是保持其靠近鼠标位置的正确位置 这个问题的一个演示是可用的 注意:释放鼠标后,不要担心滴答器无法保持其值,我的问题与用户在进度条上拖动鼠标时滴答器返回0%有关。解决方案 在不更改标记的情况下,检查触发器(该单词是否存在?)是否为#progress(或不是#progress bar): 不过仍然存在一些错误行为,比如光标在#pr
#progress
(或不是#progress bar
):
不过仍然存在一些错误行为,比如光标在#progress
和#progress ticker
之间悬停时的差异,而且有点滞后
解释
每当鼠标在#progress
及其子对象中移动时,就会触发事件mousemove
它被称为事件捕获(图中):
因此,每次移动都会调用函数两次(几乎,除非移动非常慢),一次是由#progress
调用,一次是由#progress ticker
调用
因此,e
的当前目标有一半时间不是您期望的元素,并且您得到了错误的offsetX
=鼠标内部的偏移量#progress ticker
忠告
您可以看看浏览器的滑块实现,就像在webkit中一样,使用
-webkit外观:slider horizontal
()我刚刚有了一个拖放界面
当浏览器试图选择我正在拖动的元素时,这种情况发生在我身上
用户选择:无代码>
在容器上为我修复了这个问题+1个有趣的小故障!顺便说一句,你应该直接在你的问题中添加一些代码嘿@Bigood,谢谢你的时间。这是个问题吗?@AdonisK。的确请参阅事件捕获案例(我将在回答中添加它)。
$(document).on('mousemove', '#progress', function(e) {
if (progressTicking && (e.target.id === 'progress')) {
...
| |
---------------| |-----------------
| element1 | | |
| -----------| |----------- |
| |element2 \ / | |
| ------------------------- |
| Event CAPTURING |
-----------------------------------