jQuery事件的匿名函数中的参数来自哪里?

jQuery事件的匿名函数中的参数来自哪里?,jquery,Jquery,当我开始学习jQuery时,我对它是一个JavaScript框架一无所知,一般来说,我对JavaScript一无所知。现在我试图学习jQuery在JavaScript方面的工作原理,但我不理解jQuery语法的一部分 $('#element').keypress(function(z) { }) 在前面的jQuery事件中有一个匿名函数——我认为它是一个匿名函数。如果我错了,请纠正我。在这个函数中有一个参数“z”,我们可以在这个事件中使用它来知道用哪个键按下了。哪个属性。因此,我的问题是:

当我开始学习jQuery时,我对它是一个JavaScript框架一无所知,一般来说,我对JavaScript一无所知。现在我试图学习jQuery在JavaScript方面的工作原理,但我不理解jQuery语法的一部分

$('#element').keypress(function(z) {

})
在前面的jQuery事件中有一个匿名函数——我认为它是一个匿名函数。如果我错了,请纠正我。在这个函数中有一个参数“z”,我们可以在这个事件中使用它来知道用哪个键按下了。哪个属性。因此,我的问题是:


这个函数的参数是什么?为什么这个参数与.keypress事件有关?

简单的回答是,作为事件处理程序传入的函数是由jQuery在内部调用的,因此库(或编写它的人)需要选择如何调用函数

通过指定约定(即,宣布事件处理程序将获得表示“事件对象”的单个参数),然后在其自己的库中遵循该约定,这使得像您这样的开发人员可以通过期望将事件对象作为回调的第一个参数传入来利用回调中的约定。对于
.keypress()
,jQuery调用您指定的处理程序,并将其事件对象作为第一个参数。

这意味着
keypress()
接受一个处理程序[即
函数
],该处理程序将以参数形式传递

jQuery将负责检测何时触发
keypress
事件,然后执行处理程序[匿名或正确定义],例如:

var myHandler = function(event){...}

$(document).keypress(myHandler);

如果您查看位于的文档,您将看到您正在使用的
keypress
方法的签名是:

.keypress( handler(eventObject) )

它在下面阐明了处理程序是一个函数。语法告诉您该函数只接受一个参数,即
eventObject
。提供此对象的更多详细信息。

为了可读性,参数通常作为
e
事件传递。它是标准化的jQuery,保证传递给任何处理程序(读取链接的文档)

例如,要在用户点击“回车”时执行某些操作:


匿名函数可以处理的唯一参数是DOM传入的事件。您所称的参数是任意的,
e
evt
是两个常用的值

在匿名函数中,您可以在您的案例中利用
z
访问
keypress
对象的任何可用属性和方法

一些示例包括但不限于:

$('#element').keypress(function(z){
  var key = z.which; //the specific key that was pressed
  var target = z.target; //what HTML element is the target of the event?
  var posx = z.pageX; //the mouse X position when the key was pressed
  var posy = z.pageY; //the mouse Y position when the key was pressed
}

您可能想读取:。实际上,jQuery传入的是一个规范化的事件对象,而不是DOM传入的原始事件对象。
$('#element').keypress(function (z) {

    // e.which is a normalized e.keyCode / e.charCode
    // see http://api.jquery.com/event.which/ 
    if (z.which === 13) {
        console.log("zomg why is the event passed as z?");
    }
});
$('#element').keypress(function(z){
  var key = z.which; //the specific key that was pressed
  var target = z.target; //what HTML element is the target of the event?
  var posx = z.pageX; //the mouse X position when the key was pressed
  var posy = z.pageY; //the mouse Y position when the key was pressed
}