我遇到了调试某人代码的奇怪情况。下面的代码是该问题的演示。jQuery事件处理程序和未声明的事件对象
我的印象是当进入事件处理程序时,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>
是否存在某种使用它的事件的父事件?该事件是否与按钮点击相关联? iirc'event'应该是未定义的,因为它并不隐式传递给回调函数 –
现在我知道我在找什么,MDN的文章[window.event](https://developer.mozilla.org/en- US/docs/Web/API/Window/event)给出了详细信息。 – Ouroborus