首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery:如何在不将事件对象作为参数传递的情况下获取事件处理函数中的事件对象?

jQuery:如何在不将事件对象作为参数传递的情况下获取事件处理函数中的事件对象?
EN

Stack Overflow用户
提问于 2011-05-01 23:34:30
回答 3查看 149.5K关注 0票数 71

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

代码语言:javascript
复制
<a href="#" onclick="myFunc(1,2,3)">click</a>

它指向JavaScript中的此事件处理程序:

代码语言:javascript
复制
function myFunc(p1,p2,p3) {
    //need to refer to the current event object:
    alert(evt.type);        
}

由于事件对象evt没有传递给参数,还可以获取这个对象吗?

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

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2011-05-01 23:40:43

在IE中,你可以在没有'use strict'指令的情况下在其他浏览器中通过window.event获取事件对象,也可以通过arguments.callee.caller.arguments[0]获取。

代码语言:javascript
复制
function myFunc(p1, p2, p3) {
    var evt = window.event || arguments.callee.caller.arguments[0];
}
票数 15
EN

Stack Overflow用户

发布于 2011-05-01 23:49:50

像这样编写事件处理程序声明:

代码语言:javascript
复制
<a href="#" onclick="myFunc(event,1,2,3)">click</a>

然后你的"myFunc()“函数就可以访问该事件了。

"onclick“属性的字符串值转换为函数的方式与浏览器(内部)调用函数构造函数的方式几乎完全相同:

代码语言:javascript
复制
theAnchor.onclick = new Function("event", theOnclickString);

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

票数 4
EN

Stack Overflow用户

发布于 2011-05-01 23:55:51

如果你在markup上调用你的事件处理程序,就像你现在做的那样,你不能(x-browser)。但是,如果您将click事件与jquery绑定,则可能采用以下方式:

标记:

代码语言:javascript
复制
  <a href="#" id="link1" >click</a>

Javascript:

代码语言: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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5849370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档