2

When I started learning jQuery I didn´t know anything about that it's a Framework of JavaScript and, in general, I didn't know anything about JavaScript. Now I'm trying to learn how works jQuery in respect to JavaScript, but I can't understand part of jQuery syntax.

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

})

On the previous jQuery event there is a anonymous function —I think that it's a anonymous function. Correct me if I'm wrong please. In this function there's a parameter 'z' that we can use inside this event to know which key was pressed with .which property. So my questions are:

What is this parameter of the function? Why this parameter has relation with the .keypress event?

4

5 回答 5

1

匿名函数可以处理的唯一参数是 DOM 传入的事件。您所说的参数是任意的,eevt两个普遍接受的值。

在您的匿名函数中,您可以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
}
于 2013-08-04T19:06:57.670 回答
0

简短的回答是,作为事件处理程序传入的函数由 jQuery 在内部调用,因此库(或编写它的人)必须选择他们想要调用函数的方式。

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

于 2013-08-04T19:01:55.713 回答
0

从文档

.keypress( handler(eventObject) )

这意味着keypress()接受一个将作为参数传递的处理程序[即a function] 。eventObject

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

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

$(document).keypress(myHandler);
于 2013-08-04T19:02:17.683 回答
0

如果您查看http://api.jquery.com/keypress/上的文档,您将看到keypress您正在使用的方法的签名是:

.keypress( handler(eventObject) )

它在下面阐明了处理程序是一个函数。语法告诉您该函数采用单个参数,即eventObject. http://api.jquery.com/category/events/event-object/给出了这个对象的更多细节。

于 2013-08-04T19:02:32.067 回答
0

该参数通常作为eevent为了可读性而传递。它是 jQuery 规范化事件对象,保证被传递给任何处理程序(阅读链接的文档)。

因此,例如,当用户点击“Enter”时做一些事情:

$('#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?");
    }
});
于 2013-08-04T19:02:36.763 回答