jquery事件传播

时间:2012-12-24 03:02:59

标签: jquery html

我有一个网页,当我点击链接时,会打开一个“查看此项目”页面。在第二页上,我可以单击esc键返回上一页。

在第二页上,我有一个按钮,可以创建一个用于选择照片的弹出窗体。在这个弹出窗体中,我可以单击esc返回到主要的第二页。

问题是,当我在弹出窗体中单击esc时,它会关闭弹出窗体,然后返回到第一页。即就像我点击两次esc一样。

我知道事件传播,并尝试调用e.preventDefault();在此部分代码之前,它似乎不起作用。

我在这里缺少什么东西吗?

1 个答案:

答案 0 :(得分:3)

您正在寻找的是stopPropagation()对象上的Event方法。这可以在jquery事件处理程序中调用,但它只是普通的DOM /(纯js)。所以在jQuery中:

$('#modal').on('keyup', function(e) {
  if (e.which === 27) {
    e.stopPropagation();
    // close the window
  }
});

这将使事件不会将页面冒泡到您的其他处理程序当前返回同一事件的位置。