Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果以前调用过mousemove,jquery将阻止mouseup_Javascript_Jquery_Events_Mouse - Fatal编程技术网

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
。。。