【问题标题】:Is there a way stop bubble in javascript without "e" parameter?有没有办法在没有“e”参数的情况下停止javascript中的气泡?
【发布时间】:2025-11-26 17:20:10
【问题描述】:

我看过很多教程告诉我防止气泡的方法是使用“e”参数

就像:

function(e){
    e.preventDefault()
}

但在某些情况下,萤火虫告诉我“e 未定义”是错误的

那么有没有办法在没有参数e的情况下停止气泡?

【问题讨论】:

  • 请贴出相关的错误代码
  • e 只是一个变量名,因此您可以引用传递给处理函数的事件 - Firefox 只有在尝试引用它的代码未指定参数名称时才会抱怨。
  • 你能贴出调用它的代码吗?我们无法从您输入的内容中看出 e 实际上是什么。
  • 这是XY problem。有些东西阻止您以标准方式获取事件对象。与其试图避免使用它,不如找出它没有被通过的原因。

标签: javascript parameters event-bubbling


【解决方案1】:

如果您使用元素属性(例如,<button onclick="myFunc()">)设置事件处理程序,则参数列表将为空。您必须使用 <button onclick="myFunc(event)"> 来将当前事件作为参数传递。默认情况下不会向回调函数传递任何参数。

event 在这种情况下是一个特殊变量。当使用<element onEVENT="code"> 时,浏览器会创建一个带有FunctionBody“代码”的新脚本和一个函数。然后这个函数将接受一个参数event,因此您可以在自己的函数/代码中使用这个对象(参见w3c:ehca)。请注意,IE 会为每个触发的事件创建一个全局对象 event

所以将event 作为附加变量传递并使用e.preventDefault()e.stopPropagation。请注意,return false; 不会取消 click 事件中的传播。

演示:

参考资料:

【讨论】:

    最近更新 更多