В Javascript/jQuery что означает (e)?


Я новичок в JavaScript / jQuery и я учился делать функции. Многие функции появились с помощью (e) в скобках. Позвольте мне показать вам, что я имею в виду:

$(this).click(function(e) {
    // does something
});

всегда кажется, что функция даже не использует значение (e), так почему же оно там так часто?

8 69

8 ответов:

e краткий справочник ВАР event объект, который будет передан обработчикам событий.

объект события по существу имеет много интересных методов и свойств, которые могут быть использованы в обработчиках событий.

в Примере, который вы опубликовали, это обработчик щелчка, который является MouseEvent

$(<element selector>).click(function(e) {
    // does something
    alert(e.type); //will return you click
}

демо - демонстрация событий мыши использует 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

отказ от ответственности: Это очень поздний ответ на этот конкретный пост, но поскольку я читал различные ответы на этот вопрос, мне показалось, что большинство ответов используют терминологию, которую могут понять только опытные кодеры. Этот ответ является попыткой обратиться к исходному вопросу с учетом аудитории новичков.

интро

маленький '(e)' на самом деле является частью более широкого охвата что-то в Javascript называется функцией обработки событий. Каждая функция обработки событий получает объект события. Для целей этого обсуждения подумайте об объекте как о "вещи", которая содержит кучу свойств (переменные) и методы (функции), как и объекты на других языках. Ручка,"e внутри маленький (e) вещь, как переменную, которая позволяет взаимодействовать с объектом (и я использую термин переменная очень слабо).

рассмотрим следующие примеры 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" - это событие (при нажатии на выбранный элемент).
  • "функция (e)" - это функция обработки событий (при событии создается объект).
  • " e " - это обработчик объекта (объект сделан доступный.)
  • "preventDefault ()" - это метод (функция), предоставляемый объектом.

что происходит?
Когда пользователь нажимает на элемент с идентификатором "#someLink" (вероятно, якорный тег), вызовите анонимную функцию, " функция (e)", и присвоить результирующий объект обработчику, "e". Теперь возьмите этот обработчик и вызвать один из его методов, " e. preventDefault ()", что должно препятствовать браузеру выполнять действие по умолчанию для этого элемента.

Примечание: дескриптор можно в значительной степени назвать все, что вы хотите (т. е.'(billybob)'). 'E' означает 'событие', которое, кажется, довольно стандартно для этого типа функции.

хотя ' e. preventDefault ()', вероятно, является наиболее распространенным использованием обработчика событий, сам объект содержит многие свойства и методы, к которым можно получить доступ через обработчик событий.

некоторые действительно хорошие сведения по этой теме можно найти на учебном сайте jQuery,http://learn.jquery.com. обратите особое внимание на использование ядра jQuery и событий разделы.

e не имеет особого смысла. Это просто соглашение, чтобы использовать e как имя параметра функции, когда параметр event.

может быть

$(this).click(function(loremipsumdolorsitamet) {
    // does something
}

как хорошо.

The e аргумент является коротким для объекта события. Например, может потребоваться создать код для якорей, который отменяет действие по умолчанию. Для этого вы бы написали что-то вроде:

$('a').click(function(e) {
    e.preventDefault();
}

Это означает, когда <a> тег нажата, предотвратить действие по умолчанию события click.

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

в этом примере e - Это просто параметр для этой функции, но это event объект, который проходит через него.

в jQuery e сокращенно 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);
    }); 

то же самое!

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

сегодня я просто написал сообщение о том, "почему мы используем буквы, такие как" e " в e.preventDefault()?"и я думаю, что мой ответ будет иметь некоторый смысл...

во-первых, давайте посмотрим синтаксис addEventListener

обычно это будет: цель.addEventListener(type, listener [, useCapture]);

и определение из параметров addEventlistener являются:

тип :строка, представляющая тип события для прослушивания.

слушатель :объект, который получает уведомление (объект, реализующий интерфейс событий), когда событие указанного типа происходит. Это должен быть объект, реализующий EventListener интерфейс, или функция JavaScript.

(от MDN)

но я думаю, что есть одна вещь, следует отметить: Когда вы используете функцию JavaScript в качестве слушателя, объект, который реализует интерфейс событий (object event) будет автоматически присвоен "первый параметр" из function.So,если вы используете функцию (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>

результат будет такой : [объект MouseEvent] 5 и вы предотвратите клик событие.

но если вы удалите знак комментария, например:

<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 и : "Uncaught TypeError: e. preventDefault не является функцией в HTMLInputElement. (VM409: 69)".

конечно, событие щелчка не будет предотвращено на этот раз.Потому что "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.

Это ссылка на текущий объект событие