既然没有从参数中传递事件对象“evt”,那么还有可能获取到这个对象吗?
不,不可靠。IE 和其他一些浏览器将其作为window.event
(not $(window.event)
) 提供,但这是非标准的,并非所有浏览器都支持(众所周知,Firefox 不支持)。
您最好将事件对象传递给函数:
<a href="#" onclick="myFunc(event, 1,2,3)">click</a>
这甚至适用于非 IE 浏览器,因为它们在具有event
变量的上下文中执行代码(并且适用于 IE,因为event
解析为window.event
)。我已经在 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);
});
选择器可以是任何标识锚点的东西。您有一个非常丰富的集合可供选择(几乎所有的 CSS3,还有一些)。您可以向锚点添加id
或class
,但同样,您还有其他选择。如果您可以使用它在文档中的位置而不是添加一些人为的东西,那就太好了。