Jestem nowy w JavaScript / jQuery i uczyłem się tworzyć funkcje. Wiele funkcji zostało wyświetlonych z (e) w nawiasach. Pokażę ci, co mam na myśli:
$(this).click(function(e) {
// does something
});
Zawsze okazuje się, że funkcja nie używa nawet wartości (e), więc dlaczego jest tam tak często?
Intro
Mała rzecz „ (e) ” jest w rzeczywistości częścią szerszego zakresu czegoś w JavaScript zwanego funkcją obsługi zdarzeń. Każda funkcja obsługi zdarzenia otrzymuje obiekt zdarzenia. Na potrzeby tej dyskusji pomyśl o obiekcie jako o „rzeczy”, która przechowuje zbiór właściwości ( zmiennych ) i metod ( funkcji ), podobnie jak obiekty w innych językach. Uchwyt, „ e ” wewnątrz małej (e) rzeczy, jest jak zmienna, która pozwala na interakcję z obiektem (a ja używam terminu zmienna BARDZO luźno).
Rozważ następujące przykłady jQuery:
$("#someLink").on("click", function(e){ // My preferred method e.preventDefault(); }); $("#someLink").click(function(e){ // Some use this method too e.preventDefault(); });
Wyjaśnienie
Co się dzieje?
Kiedy użytkownik kliknie element o identyfikatorze „#someLink” (prawdopodobnie tag kotwicy), wywołaj anonimową funkcję „function (e)” i przypisz wynikowy obiekt do modułu obsługi „e” . Teraz weź tę procedurę obsługi i wywołaj jedną z jej metod, „e.preventDefault ()” , co powinno uniemożliwić przeglądarce wykonanie domyślnej akcji dla tego elementu.
Uwaga: Uchwyt można nazwać dowolnie, jak chcesz (np. „ Funkcja (billybob) ”). Litera „e” oznacza „zdarzenie”, co wydaje się być dość standardowe dla tego typu funkcji.
Chociaż „e.preventDefault ()” jest prawdopodobnie najpowszechniejszym zastosowaniem procedury obsługi zdarzeń, sam obiekt zawiera wiele właściwości i metod, do których można uzyskać dostęp za pośrednictwem modułu obsługi zdarzeń.
Kilka naprawdę dobrych informacji na ten temat można znaleźć w witrynie edukacyjnej jQuery, http://learn.jquery.com . Zwróć szczególną uwagę na sekcje Korzystanie z jQuery Core i Events .
źródło
e
nie ma żadnego specjalnego znaczenia. Konwencja jest używanae
jako nazwa parametru funkcji, gdy parametrem jestevent
.To może być
$(this).click(function(loremipsumdolorsitamet) { // does something }
także.
źródło
W tym przykładzie
e
jest to tylko parametr tej funkcji, ale jest toevent
obiekt, który jest przez nią przekazywany.źródło
e
Argument jest skrótem od obiektu zdarzenia. Na przykład możesz chcieć utworzyć kod dla kotwic, który anuluje domyślną akcję. Aby to zrobić, napisałbyś coś takiego:$('a').click(function(e) { e.preventDefault(); }
Oznacza to, że
<a>
kliknięcie tagu zapobiega domyślnemu działaniu zdarzenia kliknięcia.Chociaż możesz to często widzieć, nie jest to coś, czego musisz używać w funkcji, nawet jeśli określiłeś to jako argument.
źródło
W jQuery
e
skrótevent
od bieżącego obiektu zdarzenia. Zwykle jest przekazywany jako parametr uruchamianej funkcji zdarzenia.Demo: jQuery Events
W wersji demonstracyjnej, której użyłem
e
$("img").on("click dblclick mouseover mouseout",function(e){ $("h1").html("Event: " + e.type); });
Równie dobrze mogłem użyć
event
$("img").on("click dblclick mouseover mouseout",function(event){ $("h1").html("Event: " + event.type); });
Ta sama rzecz!
Programiści są leniwi, używamy dużo skrótów, częściowo zmniejsza to naszą pracę, częściowo pomaga w czytelności. Zrozumienie tego pomoże ci zrozumieć mentalność pisania kodu.
źródło
Dzisiaj właśnie napisałem post na temat „Dlaczego używamy liter takich jak„ e ”w e.preventDefault ()?” i myślę, że moja odpowiedź będzie miała jakiś sens ...
Najpierw zobaczmy składnię addEventListener
Zwykle będzie to: target.addEventListener (typ, listener [, useCapture]);
A definicje parametrów addEventlistener to:
(Z MDN)
Myślę jednak, że należy zwrócić uwagę na jedną rzecz: kiedy używasz funkcji JavaScript jako nasłuchiwania, obiekt implementujący interfejs zdarzenia (zdarzenie obiektu) zostanie automatycznie przypisany do „pierwszego parametru” funkcji. Tak więc, jeśli używasz function (e), obiekt zostanie przypisany do "e", ponieważ "e" jest jedynym parametrem funkcji (na pewno pierwszym!), wtedy możesz użyć e.preventDefault, aby temu zapobiec ....
spróbujmy poniższy przykład:
<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>
wynikiem będzie: [obiekt MouseEvent] 5 i zapobiegniesz zdarzeniu kliknięcia.
ale jeśli usuniesz znak komentarza, taki jak:
<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>
otrzymasz: 8 i błąd : „Uncaught TypeError: e.preventDefault nie jest funkcją w HTMLInputElement. (VM409: 69)”.
Z pewnością zdarzenie kliknięcia nie zostanie tym razem zablokowane, ponieważ litera „e” została ponownie zdefiniowana w funkcji.
Jeśli jednak zmienisz kod na:
<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>
wszystko znowu będzie działać poprawnie ... otrzymasz 8 i unikniesz zdarzenia kliknięcia ...
Dlatego „e” jest tylko parametrem Twojej funkcji i potrzebujesz „e” w swojej funkcji (), aby otrzymać „obiekt zdarzenia”, a następnie wykonać e.preventDefault (). Jest to również powód, dla którego możesz zmienić „e” na dowolne słowa, które nie są zastrzeżone przez js.
źródło
Jest to odniesienie do bieżącego obiektu zdarzenia
źródło
$(this).click(function(e) { // does something });
W odniesieniu do powyższego kodu
$(this)
jest to element będący jakąś zmienną.click
to wydarzenie, które należy wykonać.parametr
e
jest automatycznie przekazywany z js do funkcji, która przechowuje wartość$(this)
value i może być dalej używana w kodzie do wykonywania pewnych operacji.źródło