我的链接上有一个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
。
有什么想法吗?
发布于 2011-05-01 23:40:43
在IE中,你可以在没有'use strict'
指令的情况下在其他浏览器中通过window.event
获取事件对象,也可以通过arguments.callee.caller.arguments[0]
获取。
function myFunc(p1, p2, p3) {
var evt = window.event || arguments.callee.caller.arguments[0];
}
发布于 2011-05-01 23:49:50
像这样编写事件处理程序声明:
<a href="#" onclick="myFunc(event,1,2,3)">click</a>
然后你的"myFunc()“函数就可以访问该事件了。
"onclick“属性的字符串值转换为函数的方式与浏览器(内部)调用函数构造函数的方式几乎完全相同:
theAnchor.onclick = new Function("event", theOnclickString);
(IE中除外)。但是,因为"event“在IE中是全局的(它是一个窗口属性),所以您可以在任何浏览器中以这种方式将其传递给函数。
发布于 2011-05-01 23:55:51
如果你在markup上调用你的事件处理程序,就像你现在做的那样,你不能(x-browser)。但是,如果您将click事件与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
https://stackoverflow.com/questions/5849370
复制相似问题