разница между функцией jQuery () и функцией (событием)

0

Я новичок в 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?

  • 0
    нет разницы вообще .. вы передаете аргумент события, если вам нужно что-то сделать с событием .. например, предотвращение поведения события по умолчанию, для получения кода ключа
  • 0
    Если вы не объявите параметр , то при вызове функции аргумент будет «потерян» (точнее, не доступен напрямую через переменную). Тем не менее, сама функция будет вызываться точно так же, поэтому, если вам не нужен параметр, его вполне можно пропустить.
Теги:

2 ответа

1

Параметры передаются функции независимо. Поместив их в подпись функции, вы создаете локальные переменные для каждого аргумента. Например, это, по сути, одно и то же.

$("#target").keyup(function() { 
  var event = arguments[0];
}

$("#target").keyup(function(event) {
}

Если вы не собираетесь использовать переменную event, то не объявляйте, что это не наносит вреда.

1

Это не имеет никакого значения, если вам не нужно какое-то событие. В случае 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);
}

Все они делают то же самое. Переменная относится к одному и тому же объекту события, так как это то, что передается.

  • 0
    я смогу получить доступ к event.which во втором варианте?
  • 0
    @ user2953551 нет, только если вы передадите его.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню