jquery / javascript: function (e){... Что такое e? зачем это нужно? что он на самом деле делает/выполняет?
$('#myTable').click(function(e) {
var clicked = $(e.target);
clicked.css('background', 'red');
});
может кто-нибудь объяснить мне это, и объяснить, почему e необходим, и что он на самом деле делает..
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) этого не делает.
в этом случае цель сообщает вам, какой элемент был первоначально нажат.