首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当鼠标按下按钮从一个div移动到另一个div时,jQuery单击事件无法工作。

当鼠标按下按钮从一个div移动到另一个div时,jQuery单击事件无法工作。
EN

Stack Overflow用户
提问于 2010-04-25 17:45:44
回答 4查看 3.1K关注 0票数 1

我创建了一个使用jQuery的页面,允许您在单击时根据鼠标坐标在页面上放置<div>s。

这是javascript:

代码语言:javascript
复制
$('document').ready(function() {
    $("#canvas").click(function(e){
    var x = e.pageX - this.offsetLeft;
    var y = e.pageY - this.offsetTop;
    $(document.createElement('div')).css({'left':x + 'px', 'top':y + 'px'}).addClass('tile').appendTo('#canvas');
    });
});

我发现,如果您在div#canvas中按下鼠标,并在放置的<div>上使用指针进行鼠标处理(反之亦然),则不会放置新的<div>。为什么会这样呢?

编辑:

好的,所以问题是鼠标向上和鼠标向下的事件在不同的元素中注册,所以它不会产生点击事件。那么,如何获得鼠标向上部分的单击忽略div.tile元素(粉红色矩形)并在div#canvas元素中注册以创建单击事件?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-25 17:50:44

您需要处理mouseup而不是click

编辑:为了确保在#canvas中发生了相应的mousedown,yuo可以处理并检查,如下所示:

代码语言:javascript
复制
var mousedownInCanvas = false;

$(document).mouseup(function() { mousedownInCanvas = false });

$('#canvas').mousedown(function() {
    mousedownInCanvas = true;
}).mouseup(function(e) {
    if (!mousedownInCanvas) return;

    var x = e.pageX - this.offsetLeft;
    var y = e.pageY - this.offsetTop;
    $('<div class="tile"></div>').css({ left: x, top: y }).appendTo('#canvas');
});
票数 2
EN

Stack Overflow用户

发布于 2010-04-25 17:56:03

我相信这不是点击,除非鼠标向上和鼠标向下发生在同一元素上。

来自jQuery文档:

当鼠标指针在元素上方时,单击事件被发送到元素,并按下并释放鼠标按钮。任何HTML元素都可以接收此事件。

更多信息这里

票数 2
EN

Stack Overflow用户

发布于 2010-04-25 17:54:29

单击由鼠标向下和鼠标向上事件组成.由于您的鼠标向下从另一个div开始,第二个div将不会注册单击.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2709207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档