jquery / javascript: function (e){... Что такое e? зачем это нужно? что он на самом деле делает/выполняет?


$('#myTable').click(function(e) {
    var clicked = $(e.target);
    clicked.css('background', 'red');
});

может кто-нибудь объяснить мне это, и объяснить, почему e необходим, и что он на самом деле делает..

4 57

4 ответа:

используя e всего за event. Вы можете передать любое имя переменной, которое вы хотите.

// would work just the same
$('#myTable').click(function(anyothername) {
    var clicked = $(anyothername.target);
});

вы можете проверить больше на обработка событий jQuery.

одно преимущество иметь e (объект, вызвавший событие) позволяет предотвратить распространение поведения по умолчанию для определенных элементов. Например:

<a id="navLink" href="http://mysite/someOtherPage.htm">Click For Info</a>

отображает ссылку, которую пользователь может нажать. Если у пользователя отключен JavaScript (почему? Я не знаю), вы хотите, чтобы пользователь перешел на другую страницу.htm, когда они нажимают на ссылку. Но если у них включен JavaScript,то вы хотите отобразить модальный диалог и не переходить от страницы. Вы бы обработайте это, предотвращая поведение по умолчанию якоря / ссылки и отображая модальное как таковое:

$("#navLink").click(function(e) {
  e.preventDefault();  //this prevents the user from navigating to the someOtherPage.htm
  $("#hiddenDiv").dialog({
    //options
  });  //show the dialog
});

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

надеюсь, что это помогает!

Я говорю в теории, что я не эксперт, но я достиг желаемого результата, используя его маленький (e), который не должен быть e lol

Я понял. Это способ передачи одного и того же события от одной функции к другой.

проще говоря. Я хотел сделать навигацию по странице эластичной функцией прокрутки, однако я хотел, чтобы страница перемещалась по наведению курсора "и" я хотел, чтобы та же навигация была доступна при определенных условиях. Я тоже хотел того же динамическая навигация от других событий щелчка, которые не были ссылками. Чтобы сохранить текущую цель и по-прежнему использовать функцию навигации, мне пришлось установить little (e), потому что jQuery потеряет область $(this) в качестве той же цели функции lol. Вот краткий пример.

function navigate_to_page(e){
var target = $(e.currentTarget).attr('href'); //--This is the same as $(this) but more static to bring out of it's scope
    $('html, body').animate({
    'scrollTop':$(target).offset().top-0,
    'scrollLeft': $(target).offset().left-$(window).width()*0.0}, 2000, 'easeOutBounce');
}

Не дайте вас запутать абракадабру. Это просто простая анимация прокрутки страницы. Что нужно обратить внимание, это Эл.currentTarget. e наша переменная и currentTarget - это jQuery, эквивалентный $(this), поэтому они вместе являются глобулярной функцией $(this). Теперь я называю его другой функцией с такими условиями, как so

$('#myNavigationDiv a').on('mouseenter', function(e){
    if($(myCondition) === true){
        return false;
        }else{
        navigate_to_page(e);
        }
    });

видите, как маленький (e) связал все вместе?

теперь вы можете заменить (e) на (whateveryouwant). Вызывая e в обеих функциях, он соответствовал e.currentTarget и вы можете применить это к любым подробным конкретным функциям, которые вам нужны, и сохранить себя буквально на страницах кода лол

это формальный параметр функции. jQuery будет проходить в объект события, когда функция вызывается. Это используется для определения цели. Как отмечается в документация, jQuery всегда будет передавать объект события, даже если браузер (например, IE) этого не делает.

в этом случае цель сообщает вам, какой элемент был первоначально нажат.