检查某个元素上是否发生了mousedown()事件

时间:2017-12-06 10:57:47

标签: jquery jquery-ui events

我正在使用此功能来检测mousedown()并初始化内容拖动:

        var mouseDown = false;
        var prevCoords = { x: 0, y: 0 };

        $("#mainDiv").mousedown(function() {
            mouseDown = true;
        }).mousemove(function(e) {
            var currentScrollX = $('#mainDiv').scrollLeft();
            var currentScrollY = $('#mainDiv').scrollTop();
            if(mouseDown) { 
                $('#mainDiv').scrollLeft(currentScrollX + prevCoords.x - e.clientX)
                $('#mainDiv').scrollTop(currentScrollY + prevCoords.y - e.clientY)
            };
            prevCoords.x = e.clientX;
            prevCoords.y = e.clientY;
        }).mouseup(function() {
            mouseDown = false;
        });

但是#mainDiv包含.foo个表格,这些表格本身可以拖动。如果在mousedown()表上发生.foo,我如何查看?在这种情况下,mouseDown应成为false以取消内容拖动。我试过这个,但它不起作用:

        $("#mainDiv").mousedown(function() {
            if($('.foo').mousedown()){
                mouseDown = false;
            }
            else{
                mouseDown = true;
            }

1 个答案:

答案 0 :(得分:3)

要检查哪个元素导致事件冒泡到#mainDiv,您可以查看事件的target。你也可以使逻辑更整洁:

$("#mainDiv").mousedown(function(e) {
  mousedown = !$(e.target).closest('.foo').length;
});