Stopping Event Propagation 的危害

如何实现检测点击区域是否在某个元素以外?
很多人都会像排名第一的答案那样做,如下:

$(window).click(function() {
//Hide the menus if visible
});

$('# menucontainer').click(function(event){
    event.stopPropagation();
});

这却会导致一个问题:点击事件停止冒泡了,可能会使得其他程序无法知道事件的发生。

那么如何做能解决这个问题呢,答案如下:

$(document).on('click', function(event) {
  if (!$(event.target).closest('# menucontainer').length) {
    // Hide the menus.
  }
});

document 监听了点击事件,判断 event target 是否是 # menucontainer 或父元素是 # menucontainer,如果不是,那你就可以知道点击区域在 # menucontainer 之外。

来源: The Dangers of Stopping Event Propagation

关键字:JavaScript, event, function, hide

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部