2013-03-08 130 views
2

滚动完成后,我想用jQuery mousemove函数触发事件。移动鼠标后触发事件滚动后

的问题是,通过滚动鼠标移动时触发 (http://docs.jquery.com/Tutorials:Mouse_Position#Tracking_mouse_position),

我想触发滚动只在事件结束了,我将鼠标移动的“真实”。

我正在使用一个非常简洁的解决方案来查看滚动停止的时间,因此我希望在此之后完成mousemove检查。 jQuery scroll() detect when user stops scrolling

我的想法是读取X - 协调,只有滚动后触发事件,如果Ÿ - 协调的变化,但我真的希望,如果我可以使用类似延迟()的setTimeout(),但这些都不是结合工作...

+0

好一种方法做到这一点(可能不是最好的方法)是绑定/解除绑定mousemove滚动/停止。检查坐标是做这件事的好方法。在滚动结束时触发自定义事件,然后检查鼠标的坐标以查看何时应触发所需的鼠标移动 – Huangism 2013-03-08 20:53:47

+0

谢谢!解绑方法非常棒!我甚至不必检查这个坐标:D – MMachinegun 2013-03-08 21:05:46

+0

因此,我所做的只是将scroll_start_上的mousemove和滚动_end_上的bind绑定。我不确定现在该怎么处理这个问题,对我来说,答案是:D,还是我只是这样离开它,也许其他人会想出更好的答案? (因为你在评论中回复我无法检查:S) – MMachinegun 2013-03-08 21:13:25

回答

1

一种方式做到这一点(可能不是最好的方法)是上滚动/停止绑定/解除绑定鼠标移动。检查坐标是做这件事的好方法。在滚动结束时触发自定义事件,然后检查鼠标的坐标以查看何时应该触发所需的鼠标移动。

也许您可以始终绑定mousemove,但设置了一个标志,因此当您滚动时,请设置该标志为false,因此mousemove不会触发,并在滚动停止时将其设置为true,并手动触发mousemove。这可能比绑定/解除绑定事件更好。试一试,看看它是否可行

+0

我不确定你使用_flag_完全匹配什么,但是我做的是,在'unbind('mousemove')之前'我检查我的变量是否** not ** false,然后解除_mousemove_并将_variable_设置为false。这种方式解除绑定不会经常触发......我注意到Firefox中的差异。 :) – MMachinegun 2013-03-12 19:51:26

+0

我的建议是避免解除绑定和重新绑定。滚动时设置flag = false,滚动停止时设置flag = true。在您的mousemove事件处理程序中,检查flag = true或false,如果为true,则执行mousemove stuff,如果为false,则不执行任何操作。如果你有时间可以尝试一下,但如果没有的话,你可以使用当前的解决方案 – Huangism 2013-03-12 20:47:08