Я новичок в jQuery и пытаюсь выяснить, в чем разница между двумя синтаксисами.
1. $( "#target" ).keyup(**function( event )** {
alert("Event argument");
}
2. $( "#target" ).keyup(**function( )** {
alert(" No Event argument");
}
Html:
input id="target" type="text"
Имеет ли значение добавление аргумента "event" в.keyup() definition?
Параметры передаются функции независимо. Поместив их в подпись функции, вы создаете локальные переменные для каждого аргумента. Например, это, по сути, одно и то же.
$("#target").keyup(function() {
var event = arguments[0];
}
$("#target").keyup(function(event) {
}
Если вы не собираетесь использовать переменную event
, то не объявляйте, что это не наносит вреда.
Это не имеет никакого значения, если вам не нужно какое-то событие. В случае keyup
события, event
, объект будет включать в себя keyCode
, который является очень полезным.
Попробуйте это:
$("#target").keyup(function(event) {
alert(event.keyCode);
}
Гораздо проще работать с console.log
а не с alert
. Возможно, вам захочется перейти на это, чтобы вам не приходилось всплывать всплывающие окна все время. Просмотрите журнал в инструментах dev (возможно, ключ f12).
Это может помочь вам понять, что происходит лучше:
function foo(yourFunction) {
var eventObject = {keyCode: 10};
yourFunction(eventObject);
}
foo(function(event) {
console.log(event);
});
В этом примере вызывается функция foo
и передается функция. foo
затем вызывает переданную функцию и передает значение этой функции. Для того, чтобы эта функция использовала его, функция должна дать ему имя. Посмотри на это:
foo(function() { //now the function doesn't accept any arguments/parameters
console.log(event); // what is "event" ???
});
Аргументы, переданные в функцию, могут быть доступны с переменными arguments
. Чтобы сохранить мои предыдущие примеры:
function foo() { //argument name removed
var eventObject = {keyCode: 10};
yourFunction(eventObject); //this is now undefined
console.log(arguments);
//this will be an array
//the first value of the array will be the function that was passed in
}
foo(function() { //argument named remove
console.log(event); //this is also undefined
console.log(arguments);
//the first value of "arguments" will be the eventObject that was passed in
});
Если вы пишете функцию для принятия аргументов или нет, аргументы могут быть переданы ей и доступны с переменной arguments
, но если вам это нужно, вы должны указать им имя локальной переменной.
Одна последняя вещь. Неважно, что вы называете аргументом. Вы просто даете ему любое местное имя, которое вы хотите.
$("#target").keyup(function(e) {
alert(e);
}
$("#target").keyup(function(evt) {
alert(evt);
}
$("#target").keyup(function(event) {
alert(event);
}
$("#target").keyup(function(cookieMonster) {
alert(cookieMonster);
}
Все они делают то же самое. Переменная относится к одному и тому же объекту события, так как это то, что передается.