Javascript 如果以前调用过mousemove,jquery将阻止mouseup
我有一个Javascript 如果以前调用过mousemove,jquery将阻止mouseup,javascript,jquery,events,mouse,Javascript,Jquery,Events,Mouse,我有一个div,其中包含许多水平显示的span按钮。屏幕上的按钮太多,因此我希望用户能够单击并拖动整行按钮。但是,如果行被拖动,我不希望按钮的mouseup事件触发 支架仅包含按钮元素。以下是ASCII表示法: ------------------------------- | btn | btn | btn | btn | btn | ------------------------------- 下面是代码设置。当前,按钮上的mouseup处理程序在保持器上的处理程序之前被调用(处理程序在
div
,其中包含许多水平显示的span
按钮。屏幕上的按钮太多,因此我希望用户能够单击并拖动整行按钮。但是,如果行被拖动,我不希望按钮的mouseup
事件触发
支架
仅包含按钮
元素。以下是ASCII表示法:
-------------------------------
| btn | btn | btn | btn | btn |
-------------------------------
下面是代码设置。当前,按钮上的mouseup
处理程序在保持器上的处理程序之前被调用(处理程序在冒泡阶段被调用),因此在保持器的mouseup
处理程序中调用event.preventPropagation()
没有帮助
<div id="holder">
<span class="button"></span>
</div>
$('#holder').mousedown( function () {
$(document).mousemove( function () {
// scroll content of #holder
} ).mouseup( function () {
// stop scrolling
$(document).unbind('mouseup').unbind('mousemove');
} );
} );
$('.button').mouseup( function () {
$('document').mousemove( function () {
// do some action here, but only if holder hasn't scrolled on mousedown
} );
} );
$('#holder').mousedown(函数(){
$(文档).mousemove(函数(){
//滚动#holder的内容
}).mouseup(函数(){
//停止滚动
$(文档).unbind('mouseup').unbind('mousemove');
} );
} );
$('.button').mouseup(函数(){
$('document').mousemove(函数(){
//在此处执行一些操作,但前提是holder未在鼠标向下滚动
} );
} );
有什么想法吗?为什么不使用一个全局变量来控制流量,比如:
var scrolled = false;
$('#holder').mousedown( function () {
$(document).mousemove( function () {
scrolled = true;
// scroll content of #holder
} ).mouseup( function () {
// stop scrolling
$(document).unbind('mouseup').unbind('mousemove');
} );
} );
$('.button').mouseup( function () {
$('document').mousemove( function () {
if (scrolled == false) {
// do some action here, but only if holder hasn't scrolled on mousedown
}
} );
} );
我想可能有一个更优雅的解决方案:)我当然必须在文档mouseup处理程序中设置
scrolled=false
。。。