我正在使用此功能来检测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;
}
答案 0 :(得分:3)
要检查哪个元素导致事件冒泡到#mainDiv
,您可以查看事件的target
。你也可以使逻辑更整洁:
$("#mainDiv").mousedown(function(e) {
mousedown = !$(e.target).closest('.foo').length;
});