jquery / javascript: function (e) {.... что такое e? зачем это нужно? что он на самом деле делает / выполняет? - PullRequest
57 голосов
/ 21 августа 2010
$('#myTable').click(function(e) {
    var clicked = $(e.target);
    clicked.css('background', 'red');
});

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

Ответы [ 4 ]

64 голосов
/ 21 августа 2010

Использование e - это просто сокращение от event.Вы можете передать любое имя переменной по вашему желанию.

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

Вы можете узнать больше о обработке событий jQuery .

10 голосов
/ 21 августа 2010

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

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

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

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

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

Надеюсь, это поможет!

8 голосов
/ 07 декабря 2013

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

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

Проще говоря. Я хотел сделать навигацию по страницам эластичной функцией прокрутки, однако я хотел, чтобы страница перемещалась при наведении », и« я хотел, чтобы та же самая навигация была активной при определенных условиях. Я также хотел такую ​​же динамическую навигацию от других событий нажатия, которые не были ссылками. Чтобы сохранить текущую цель и по-прежнему использовать навигационную функцию, мне пришлось установить значение 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');
}

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

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

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

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

6 голосов
/ 21 августа 2010

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

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

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