【问题标题】:Javascript - Locate the item that triggered the eventJavascript - 找到触发事件的项目
【发布时间】:2013-01-07 03:20:35
【问题描述】:

我需要拦截页面上触发的所有事件并阻止它们; 然后我想将 XML 消息发送到将返回多个客户端的 servlet。 收到消息后,事件正常运行。

所以我有两个问题:拦截并停止所有事件,然后触发延迟事件。

要监听页面上任何元素的点击,我想我会在 $(document) 上添加一个“点击”监听器,它组成了正确的 XML 消息:但这样我在冒泡的顶层拦截了事件!

  1. 如果我在这里写一个 preventDefault/stopPropagation 方法,它是在事件执行之后执行的吗?如何停止活动?
  2. event.target 方法返回的是文档元素还是最初触发事件的元素?

那么, 如果我使用目标和事件类型编写 XML 消息,当客户端接收到消息并以编程方式触发它时,这可以释放循环吗?

更新: 第二个问题的答案由http://www.quirksmode.org/js/events_properties.html给出 写在哪里:

即使事件被捕获或冒泡,目标/srcElement 始终保持元素发生在事件上。

【问题讨论】:

  • 您可以通过测试来回答 #2。关于#1,是的,任何事件处理程序都可以在它冒泡时对其做出反应

标签: javascript events javascript-events jquery


【解决方案1】:

要确定哪个元素触发了事件,请在事件回调中使用:

console.log("LOG|Event> " + "target: " + event.target);
if(event.target.id) {
    console.log("LOG|Event> " + "target.id: " + event.target.id);
}

跨浏览器请参考:

http://www.quirksmode.org/js/events_properties.html

【讨论】:

  • 感谢回复,我知道使用的方法是“目标”,我的问题是通过将事件捕获到更高级别的冒泡得到的目标是谁
  • 这符合您的标准吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2013-04-26
  • 1970-01-01
  • 2020-09-24
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多