javascript - 火狐浏览器错误: "Event is not defined" despite passing "event" as function argument

标签 javascript jquery

假设我想要一个自定义函数来处理页面转换。页面上的链接和 div 元素都有“单击”事件监听器。显然,在链接的情况下,我想阻止默认的链接操作,以便我的函数可以在过渡效果完成后接管重定向页面。

下面的 jsfiddle 是一个简化的示例。它适用于 Chrome、IE、Opera,但 Firefox 会抛出 ReferenceError:事件未定义

https://jsfiddle.net/hty7tsty/9/

HTML

<div id="div">Div</div>
<a id="link" href="#">Link</a>
<div id="result" style="display:none">Clicked</div>

JS

$('#div, #link').click(myfunc(event));

function myfunc(event){

    return function(){
    if(event) { event.preventDefault(); }
    $('#result').show();
  }

}

我有一些方法可以避免这个问题,例如不使用 <a>元素,但我想了解为什么 Firefox 的行为有所不同。

最佳答案

请改用此代码,firxfox 需要一个将事件作为参数传递给它的函数,但在您的代码中,调用 myfun() 返回的函数 没有名为 event 的参数,因此它将返回 undefined 使用此示例

$('#div, #link').click(myfunc());

function myfunc(){

	return function(event){
    if(event) { event.preventDefault(); }
    $('#result').show();
  }
  
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div">Div</div>
<a id="link" href="#">Link</a>
<div id="result" style="display:none">Clicked</div>

关于javascript - 火狐浏览器错误: "Event is not defined" despite passing "event" as function argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48024218/

相关文章:

javascript - Angular Material - 如何将自定义指令属性附加到 md-list-item 元素?

javascript - 尝试从头开始使用 Javascript 创建一个 each() 类型的 jQuery 函数

jquery - 从具有相同类的多个 div 中获取输入字段的值

强制 attr 更新后,JQuery html() 调用不返回值

jquery - 数据表:没有分页按钮

javascript - jquery:选择选项和背景颜色

javascript - 我怎样才能在页面中一直滚动内容?

javascript - 当一系列 jquery ajax 调用完成时执行一个函数(!)

javascript - 使用 Javascript 加载 jQuery 并使用 jQuery

javascript - Bootstrap 3 轮播最后显示空白幻灯片