jQuery的:如何获取事件处理函数中的事件对象,而不传递它作为参数?

我的链接上有一个onclick属性:

 <a href="#" onclick="myFunc(1,2,3)">click</a> 

这指向JavaScript中的这个事件处理程序:

 function myFunc(p1,p2,p3) { //need to refer to the current event object: alert(evt.type); } 

由于事件对象“evt”没有传递给参数,是否仍然有可能获得这个对象?

我试过window.event$(window.event) ,但都是undefined

任何想法?

由于事件对象“evt”没有从parameter passing,是否仍然有可能获得这个对象?

不,不可靠。 IE浏览器和其他一些浏览器使它可以作为window.event (不是$(window.event) ),但许多浏览器不。

你最好把事件对象传递给函数:

 <a href="#" onclick="myFunc(event, 1,2,3)">click</a> 

即使在非IE浏览器上也能运行,因为它们在具有eventvariables的上下文中执行代码(因为eventparsing为window.event所以在IE上运行)。 我试过IE6 +,Firefox,Chrome,Safari和Opera。 例如: http : //jsbin.com/iwifu4

但是,迄今为止, 最好的办法就是正确地连接事件:

HTML:

 <a href="#">click</a> 

使用jQuery的JavaScript(因为你使用的是jQuery):

 $("selector_for_the_anchor").click(function(event) { // Call `myFunc` myFunc(1, 2, 3); // Use `event` here at the event handler level, for instance event.stopPropagation(); }); 

…或者如果你真的想把event传递给myFunc

 $("selector_for_the_anchor").click(function(event) { myFunc(event, 1, 2, 3); }); 

select器可以是标识锚点的任何东西。 你有一个非常丰富的select(几乎所有的CSS3,加上一些)。 你可以添加一个idclass的锚点,但是,你有其他的select。 如果您可以使用它在文档中的位置,而不是添加任何人造的东西,那么很好。

在IE中,您可以通过window.event在其他浏览器中获取事件对象,而不'use strict'指令,可以通过arguments.callee.caller.arguments[0]

 function myFunc(p1, p2, p3) { var evt = window.event || arguments.callee.caller.arguments[0]; } 

写下你的事件处理程序声明:

 <a href="#" onclick="myFunc(event,1,2,3)">click</a> 

然后你的“myFunc()”函数就可以访问这个事件。

“onclick”属性的string值以与浏览器(内部)几乎完全相同的方式转换为一个函数,调用Function构造函数:

 theAnchor.onclick = new Function("event", theOnclickString); 

(IE除外)。 但是,因为“事件”是IE中的一个全局属性(这是一个窗口属性),所以您可以在任何浏览器中将它传递给函数。

如果你在标记上调用你的事件处理程序,就像你现在正在做的那样,你不能(x-browser)。 但是,如果你将点击事件绑定到jquery,可能有以下的方法:

标记:

  <a href="#" id="link1" >click</a> 

使用Javascript:

  $(document).ready(function(){ $("#link1").click(clickWithEvent); //Bind the click event to the link }); function clickWithEvent(evt){ myFunc('p1', 'p2', 'p3'); function myFunc(p1,p2,p3){ //Defined as local function, but has access to evt alert(evt.type); } } 

自从事件ob