gpt4 book ai didi

javascript - jQuery 事件处理程序和未声明的事件对象

转载 作者:行者123 更新时间:2023-11-30 15:30:53 25 4
gpt4 key购买 nike

我在调试某人的代码时遇到了一个奇怪的情况。下面的代码演示了这个问题。

我的印象是event在进入事件处理器的时候应该是undefined。这就像在 Firefox 中,但在 Chrome 和 IE11 中 event 不是 undefined,而是包含事件对象。我的猜测是闭包以某种方式生效,但在 Firefox 中不是。

它应该以哪种方式工作?不一致的罪魁祸首在哪里(jQuery?Firefox?Chrome/IE11?)?

$('button').on('click',function(){
var color = '#'+(Math.random()*0xFFFFFF<<0).toString(16);
$(event.target).css({backgroundColor:color});
$('body').css({backgroundColor:color});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button">Click me!</button>

最佳答案

在某些浏览器中,事件实际上是全局定义的,window.event,它只是引用最后一个事件。在其他情况下,它需要显式传递。您可以总是将它作为我认为的第一个参数传递(我知道我不久前遇到过这个问题并且认为这是我使用的解决方案)。

如果你想真正安全,你总是可以通过它然后做 event = event || window.event 函数内部。

关于javascript - jQuery 事件处理程序和未声明的事件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com