В 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) и может быть использована в вашем коде для выполнения некоторых операций.