为了账号安全,请及时绑定邮箱和手机立即绑定

当您将鼠标释放到外部时,如何停止点击传播

当您将鼠标释放到外部时,如何停止点击传播

繁星coding 2021-03-30 13:15:22
我有一个有关如何停止事件传播的问题。想象一下,我有两个div,一个容器和一个竞争。当我在内容内进行完整单击(鼠标向下移动和鼠标向上移动)时,可以使用preventDefault()停止传播但是,如果我将mousedown放在内容内部,将鼠标移到外部并释放按钮,则将触发容器处理程序。我不在乎内容中的事件,但是在这种情况下,我需要停止事件通过容器进行。我做了一个小提琴来测试它:https : //jsfiddle.net/Lq7v50nw/JS:$('#container').on('click', function(){alert('click in container')});$('#content').on('click', function(ev){ev.stopPropagation();alert('click in content')});的HTML<div id="container">  <div id="content"></div></div>反正有实现这种行为的方法吗?谢谢你。编辑(有关我已经尝试过的内容的更多信息)更改mousedown的click事件。问题在于他们需要在内容内单击并拖动,有时拖动到内容之外会触发容器处理程序。我无法使用mousedown。
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

您需要停止使用本机的“ click”事件,并以某种方式实现自己的合成“ click”事件。您需要同时聆听“ mousedown”和“ mouseup”,才能模仿“ click”。

想法是在“ mousedown”内部附加一个一次性的“ mouseup”处理程序,以合成完整的“ click”。

如果“鼠标按下”在#内容,你stopPropagation并附加“鼠标松开”给#内容。这样,由于#container没有附加“鼠标”,因此无法在其上触发这种合成的“喀哒”声。


查看完整回答
反对 回复 2021-04-22
?
湖上湖

TA贡献2003条经验 获得超2个赞

也许您可以通过“ mousedown”解决您的问题?


$('#container').on('mousedown', function(ev){

ev.stopPropagation();

alert('click in container')

});


$('#content').on('mousedown', function(ev){

ev.stopPropagation();

alert('click in content w2')

});

它立即触发


查看完整回答
反对 回复 2021-04-22
?
长风秋雁

TA贡献1757条经验 获得超7个赞

尝试结合使用keyup和mosuseup


 $('#container').on('keyup', function(ev){

    alert('click in container');

ev.stopPropagation();

});


$('#content').on('mouseup', function(ev){

    ev.stopPropagation();

    alert('click in content')

});

我希望这会有用。


查看完整回答
反对 回复 2021-04-22
  • 3 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信