A有一个大的div(地图)可以通过jQuery UI draggable拖动.div具有可点击的子div.
我的问题是,如果你拖动地图,在鼠标向上时,会在你开始拖动的任何子div上触发click事件.
如果拖动部分是拖动鼠标(如果只是点击没有拖动,而不是某人只需要点击事件,那么我如何阻止鼠标触发点击事件).
Tom*_*oer 50
$('.selector').draggable({
stop: function(event, ui) {
// event.toElement is the element that was responsible
// for triggering this event. The handle, in case of a draggable.
$( event.originalEvent.target ).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
Run Code Online (Sandbox Code Playgroud)
这是因为"一个侦听器" 在 "普通"侦听器之前被触发.因此,如果一个单一的监听器停止传播,它将永远不会到达您之前设置的监听器.
我有这个问题,解决方案是在click事件处理程序之前应用可拖动事件处理程序.我正在移动一些代码并突然遇到这个问题.我终于意识到我已经改变了应用处理程序的顺序.当我将其切换回来时,事情再次开始正常工作 - 拖动不会导致点击.
您是否可以在开始拖动时设置一个变量,例如“justDragged = true”,然后在 mouseUp 事件上检查此变量,如果为 true,则将其设置为 false,然后执行 event.preventDefault + return 而不执行任何操作。这样它会跳过拖动后的第一次单击。看起来有点hackish,也许其他人会有更优雅的解决方案。