В Javascript/jQuery, что означает (e)?
Я новичок в JavaScript/jQuery, и я изучал, как создавать функции. В скобках появилось множество функций (e). Позвольте мне показать вам, что я имею в виду:
$(this).click(function(e) {
// does something
});
Всегда кажется, что функция даже не использует значение (e), так почему это так часто?
Ответы
Ответ 1
e
- это короткая ссылка var для объекта event
, которая будет передана обработчикам событий.
Объект события по существу имеет множество интересных методов и свойств, которые могут использоваться в обработчиках событий.
В примере, который вы опубликовали, является обработчик щелчка, который является MouseEvent
$(<element selector>).click(function(e) {
// does something
alert(e.type); //will return you click
}
DEMO - События мыши DEMO использует e.which
и e.type
Некоторые полезные ссылки:
http://api.jquery.com/category/events/
http://www.quirksmode.org/js/events_properties.html
http://www.javascriptkit.com/jsref/event.shtml
http://www.quirksmode.org/dom/events/index.html
http://www.w3.org/TR/DOM-Level-3-Events/#event-types-list
Ответ 2
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это очень поздний ответ на этот конкретный пост, но поскольку я читал различные ответы на этот вопрос, мне показалось, что большинство ответов использует терминологию, которую могут понять только опытные кодеры. Этот ответ является попыткой рассмотреть исходный вопрос с учетом начинающей аудитории.
Введение
Маленькая вещь (e) на самом деле является частью более широкой области чего-то в Javascript, называемой функцией обработки событий. Каждая функция обработки событий получает объект события. Для целей этого обсуждения подумайте о объекте как о "веществе", который содержит кучу свойств (переменных) и методов (функций), подобно объектам на других языках. Ручка "e" внутри маленькой (e) вещи похожа на переменную, которая позволяет вам взаимодействовать с объектом (и я использую термин variable VERY loosely).
Рассмотрим следующие примеры jQuery:
$("#someLink").on("click", function(e){ // My preferred method
e.preventDefault();
});
$("#someLink").click(function(e){ // Some use this method too
e.preventDefault();
});
Объяснение
- "# someLink" - это ваш селектор элементов (какой тег HTML вызывает это действие).
- "click" - это событие (при щелчке выбранного элемента).
- "function (e)" - это функция обработки событий (при создании события, объекта).
- "e" - обработчик объекта (объект становится доступным).
- "preventDefault()" - это метод (функция), предоставляемый объектом.
Что происходит?
Когда пользователь нажимает на элемент с идентификатором "#someLink" (возможно, якорный тег), вызовите анонимную функцию "function (e)" и назначьте результирующий объект обработчику "e" . Теперь возьмите этот обработчик и вызовите один из его методов: "e.preventDefault()", который должен помешать браузеру выполнять действие по умолчанию для этого элемента.
Примечание. Ручка может быть названа так, как вам угодно (т.е. функция (billybob) ")." E "означает" событие", которое кажется довольно стандартным для этого типа функций.
Хотя "e.preventDefault()", вероятно, является наиболее распространенным использованием обработчика событий, сам объект содержит множество свойств и методов, к которым можно получить доступ через обработчик событий.
Некоторые действительно хорошие сведения по этой теме можно найти на сайте обучения jQuery, http://learn.jquery.com. Обратите особое внимание на Использование jQuery Core и Events разделы.
Ответ 3
e
не имеет особого значения. Это просто соглашение использовать e
как имя параметра функции, когда параметр event
.
Это может быть
$(this).click(function(loremipsumdolorsitamet) {
// does something
}
.
Ответ 4
В этом примере e
является просто параметром для этой функции, но это объект event
, который проходит через него.
Ответ 5
Аргумент e
является коротким для объекта события. Например, вы можете создать код для якорей, который отменяет действие по умолчанию. Для этого вы должны написать что-то вроде:
$('a').click(function(e) {
e.preventDefault();
}
Это означает, что при нажатии тега <a>
предотвращается действие по умолчанию события click.
Хотя вы можете часто его видеть, это не то, что вам нужно использовать в функции, даже если вы указали ее как аргумент.
Ответ 6
В jQuery e
short для event
- текущий объект события. Он обычно передается как параметр для функции события, который должен быть запущен.
Демо: события jQuery
В демо я использовал e
$("img").on("click dblclick mouseover mouseout",function(e){
$("h1").html("Event: " + e.type);
});
Я мог бы также использовать event
$("img").on("click dblclick mouseover mouseout",function(event){
$("h1").html("Event: " + event.type);
});
То же самое!
Программисты ленивы, мы используем много сокращений, частично это уменьшает нашу работу, частично помогает с удобочитаемостью. Понимание этого поможет вам понять менталитет написания кода.
Ответ 7
Сегодня я только что написал сообщение о "Почему мы используем буквы типа" e "в e.preventDefault()?" и я думаю, что мой ответ будет иметь смысл...
Сначала рассмотрим синтаксис addEventListener
Обычно это будет:
target.addEventListener(тип, слушатель [, useCapture]);
И определение параметров addEventlistener:
type: Строка, представляющая тип события для прослушивания.
прослушиватель: объект, получающий уведомление (объект, реализующий интерфейс Event), когда событие указанного типа имеет место. Это должен быть объект, реализующий EventListener интерфейс или функцию JavaScript.
(из MDN)
Но я думаю, что нужно отметить одну вещь:
Когда вы используете функцию Javascript в качестве слушателя, объект, реализующий интерфейс Event (событие объекта), автоматически присваивается первому параметру " функции. Поэтому, если вы используете функцию (e), объект будет назначен" e ", потому что" e" - единственный параметр функции (определенно первый!), тогда вы можете использовать e.preventDefault, чтобы что-то предотвратить....
попробуем пример, как показано ниже:
<p>Please click on the checkbox control.</p>
<form>
<label for="id-checkbox">Checkbox</label>
<input type="checkbox" id="id-checkbox"/>
</div>
</form>
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
//var e=3;
var v=5;
var t=e+v;
console.log(t);
e.preventDefault();
}, false);
</script>
результат будет: [object MouseEvent] 5, и вы предотвратите событие click.
но если вы удалите знак комментария, например:
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
var e=3;
var v=5;
var t=e+v;
console.log(t);
e.preventDefault();
}, false);
</script>
вы получите: 8 и ошибка: "Неподготовлено TypeError: e.preventDefault не является функцией в HTMLInputElement. (VM409: 69)."
Конечно, событие click не будет предотвращено на этот раз. Поскольку "e" было снова определено в функции.
Однако, если вы измените код на:
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
var e=3;
var v=5;
var t=e+v;
console.log(t);
event.preventDefault();
}, false);
</script>
каждая вещь снова будет работать исправно... вы получите 8, и событие click будет предотвращено...
Следовательно, "e" - это просто параметр вашей функции, и вам нужно "e" в вашей функции() для получения "объекта события", а затем выполнить e.preventDefault(). Это также является причиной того, что вы можете изменить "e" на любые слова, которые не зарезервированы js.
Ответ 8
Это ссылка на текущий объект события
Ответ 9
$(this).click(function(e) {
// does something
});
Ссылаясь на приведенный выше код
$(this)
это элемент, который как некоторая переменная.
click
- это событие, которое необходимо выполнить.
параметр e
автоматически передается из js в вашу функцию, которая содержит значение $(this)
и может быть использована в вашем коде для выполнения некоторых операций.