gpt4 book ai didi

javascript - 停止从单击处理程序传播 mousedown/mouseup

转载 作者:可可西里 更新时间:2023-11-01 01:50:54 25 4
gpt4 key购买 nike

Here's a DEMO .

我有两个 div,一个内部和一个外部:

<div id="outer">
<div id="inner"></div>
</div>

通过一些 CSS,您可以看出哪个是哪个:

#outer {
width: 250px;
height: 250px;
padding: 50px;
background: yellow;
}

#inner {
width: 250px;
height: 250px;
background: blue;
}

我尝试停止从 click 处理程序中传播 mousedownmouseup 事件,如下所示:

$('#inner').on('click', function(e) {
e.stopPropagation();
$(this).css({'background': 'green'});
return false;
});

$('#outer').on('mousedown', function(e) {
$(this).css({'background': 'green'});
});

$('#outer').on('mouseup', function(e) {
$(this).css({'background': 'yellow'});
});

这似乎不可能。起作用的是从其他 mousedownmouseup 调用中调用 .stopPropagation,如下所示 ( another DEMO) :

$('#inner').on('mousedown', function(e) {
e.stopPropagation();
return false;
});

$('#inner').on('mouseup', function(e) {
e.stopPropagation();
return false;
});

我可能已经回答了我自己的问题,但我不确定我的方法是否最好或最合理。这是阻止事件冒泡到 mousedownmouseup 的正确方法吗?

最佳答案

是的。由于 mouseclick 和 mousedown/mouseup 是不同的事件,因此您根本无法从另一个获取一个 - 您必须在自己的 mousedown/mouseup 处理程序中执行此操作。您可以做的是将其重构为在两个地方都使用的通用方法:

stopPropagation('#inner', 'mousedown');
stopPropagation('#inner', 'mouseup');

function stopPropagation(id, event) {
$(id).on(event, function(e) {
e.stopPropagation();
return false;
});
}

关于javascript - 停止从单击处理程序传播 mousedown/mouseup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com