0

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

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

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

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

我在这里缺少什么吗?

4

1 回答 1

3

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

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

这将防止事件冒泡到您的其他处理程序当前返回同一事件的页面。

于 2012-12-24T03:11:11.490 回答