jquery / javascript: function (e) {...co to jest e? dlaczego jest to potrzebne? co tak naprawdę robi/osiąga?

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

Czy ktoś może mi to wyjaśnić, i wyjaśnić, dlaczego e jest potrzebne, i co tak naprawdę robi..

Author: Yi Jiang, 2010-08-21

4 answers

Użycie e jest tylko skrótem od event. Możesz podać dowolną nazwę zmiennej.

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

Możesz sprawdzić więcej na temat obsługi zdarzeń przez jQuery .

 64
Author: Frankie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-21 02:30:29

Jedna z zalet posiadania e (obiektu, który wywołał zdarzenie) pozwala zapobiec propagacji domyślnych zachowań dla niektórych elementów. Na przykład:

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

Renderuje link, który użytkownik może kliknąć. Jeśli użytkownik ma wyłączoną obsługę JavaScript (dlaczego? Nie wiem), chcesz, aby użytkownik nawigował do someOtherPage.htm po kliknięciu linku. Ale jeśli mają włączoną obsługę JavaScript, chcesz wyświetlić okno modalne i nie odchodzić od strony. Poradziłbyś sobie z tym przez blokowanie domyślnego zachowania kotwicy/łącza i wyświetlanie modalu jako takiego:

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

Tak więc posiadanie tego parametru pozwala m.in. na zapobieganie domyślnemu zachowaniu wybranego elementu.

Mam nadzieję, że to pomoże!
 10
Author: David Hoerster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-21 03:04:47

Mówię w teorii, że nie jestem ekspertem, ale osiągnąłem pożądany efekt, używając małego (e), który nie musi być e lol

Rozgryzłem to. Jest to sposób przekazywania tego samego Zdarzenia z jednej funkcji do drugiej.

Mówiąc prościej. Chciałem, aby nawigacja strony była elastyczną funkcją przewijania, jednak chciałem, aby Strona poruszała się po najechaniu kursorem " i " chciałem, aby ta sama nawigacja była klikalna pod pewnymi warunkami. Chciałem też mieć taką samą dynamikę nawigacja z innych zdarzeń kliknięć, które nie były łączami. Aby utrzymać bieżący cel i nadal korzystać z funkcji nawigacyjnej musiałem ustawić mały (e), ponieważ jQuery straci zakres $(this) jako ten sam cel funkcji lol. Oto szybki przykład.

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');
}
Nie pozwól, by ten bełkot Cię zmylił. To tylko prosta animacja przewijania strony. Należy zwrócić uwagę na e. currentTarget . e jest naszą zmienną, a currentTarget jest jQuery odpowiednikiem $(this) jest więc funkcja Globularna $(this). Teraz wywołuję ją przez inną funkcję z condistions jak TAK
$('#myNavigationDiv a').on('mouseenter', function(e){
    if($(myCondition) === true){
        return false;
        }else{
        navigate_to_page(e);
        }
    });

Widzisz, jak mały (e) połączył wszystko razem?

Teraz możesz zamienić (e) na (cokolwiek chcesz). Wywołując e w obu funkcjach dopasował e .currentTarget i możesz zastosować to do dowolnych szczegółowych funkcji, których potrzebujesz i zapisać sobie dosłownie strony kodu lol

 8
Author: BRianIAK The Villain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-07 05:10:03

Jest to parametr formalny funkcji. jQuery przejdzie w obiekcie event podczas wywoływania funkcji. Służy to do określenia celu. Jak wspomniano w dokumentacji , jQuery zawsze przekaże obiekt event nawet wtedy, gdy przeglądarka (np. IE) tego nie robi.

W tym przypadku cel informuje, który element został pierwotnie kliknięty.

 6
Author: Matthew Flaschen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-21 02:38:41