În Javascript/jQuery ce înseamnă (e)? (Programare, Javascript, Jquery, Funcție, Parametri, Trecerea Parametrilor)

shrewdbeans a intrebat.

Sunt nou în JavaScript/jQuery și am învățat cum să fac funcții. Au apărut o mulțime de funcții cu (e) în paranteze. Să vă arăt ce vreau să spun:

$(this).click(function(e) {
    // does something
});

Întotdeauna se pare că funcția nici măcar nu folosește valoarea lui (e), așa că de ce este acolo atât de des?

9 răspunsuri
Selvakumar Arumugam

e este referința scurtă a var pentru event obiect care va fi trecut la gestionarii de evenimente.

În esență, obiectul evenimentului are o mulțime de metode și proprietăți interesante care pot fi utilizate în gestionarii de evenimente.

În exemplul pe care l-ați postat este un manipulator de clic care este un MouseEvent

$(<element selector>).click(function(e) {
    // does something
    alert(e.type); //will return you click
}

DEMO – Mouse Events DEMO utilizează e.which și e.type

câteva referințe utile:

http://api.jquery.com/category/events/

http://www.quirksmode.org/js/events_properties.html

http://www.javascriptkit.com/jsref/event.shtml

http://www.quirksmode.org/dom/events/index.html

http://www.w3.org/TR/DOM-Level-3-Events/#event-types-list

Comentarii

  • lol, asta aproape că pare o întrebare prostească, dar totuși, este în locul potrivit, Poate doriți să vă completați răspunsul cu un exemplu de utilizare în comparație cu js obișnuit (nu că ar exista o diferență, ci cum este folosit în jQuery în comparație cu js) –  > Por SpYk3HH.
  • @SpYk3HH De acord. Planificarea de a face acest lucru. –  > Por Selvakumar Arumugam.
  • @SelvakumarArumugam Așa că nu sunt atât de sigur că sunt același lucru. Se pare că unul returnează w.Event și celălalt returnează MouseEvent. Pentru exemplul de mai sus, cred că sunt destul de asemănătoare, dar în cazul $(document).on(‘click’, ‘.btn’, e=> { console.log(e); console.log(event)}); cele două sunt diferite. Mai exact pentru e.currentTarget și event.currentTarget. În acest caz, e.currentTarget vă va oferi ceea ce aveți nevoie, dar event.currentTarget returnează documentul și nu butonul pe care ați făcut clic. –  > Por Adam Youngers.
  • Dacă mă uit la răspunsuri, aș spune că event === e.originalEvent și că e conține ceva mai multe detalii. –  > Por Adam Youngers.
  • learn.jquery.com/events/introduction-to-events/… –  > Por Adam Youngers.
dsanchez

DISCLAIMER: Acesta este un răspuns foarte târziu la această postare particulară, dar în timp ce citeam diverse răspunsuri la această întrebare, m-a frapat faptul că majoritatea răspunsurilor folosesc o terminologie care poate fi înțeleasă doar de către programatori experimentați. Acest răspuns este o încercare de a răspunde la întrebarea inițială având în vedere un public novice.

Introducere

Micul ‘(e)‘ face de fapt parte din domeniul de aplicare mai larg a ceva în Javascript numit funcție de tratare a evenimentelor. Fiecare funcție de tratare a evenimentelor primește un obiect eveniment. În scopul acestei discuții, gândiți-vă la un obiect ca la un „lucru” care deține o mulțime de proprietăți (variabile) și metode (funcții ).), la fel ca obiectele din alte limbaje. Mânerul,e‘ din interiorul micului (e) este ca o variabilă care vă permite să interacționați cu obiectul (și folosesc termenul variabilă foarte vag).

Luați în considerare următoarele exemple jQuery:

$("#someLink").on("click", function(e){ // My preferred method
    e.preventDefault();
});

$("#someLink").click(function(e){ // Some use this method too
    e.preventDefault();
});

Explicație

  • „#someLink” este selectorul elementului tău (care tag HTML va declanșa acest lucru).
  • „click” este un eveniment (atunci când elementul selectat este apăsat).
  • „function(e)” este funcția de gestionare a evenimentului (la eveniment, se creează un obiect).
  • „e” este gestionarul obiectului (obiectul devine accesibil).
  • „preventDefault()” este o metodă (funcție) furnizată de obiect.

Ce se întâmplă?
Atunci când un utilizator face clic pe elementul cu id-ul „#someLink” (probabil un tag de ancorare), apelează o funcție anonimă, „function(e)”și atribuiți obiectul rezultat unui handler, „e”. Acum, luați acel manipulator și apelați una dintre metodele sale, „e.preventDefault()”, care ar trebui să împiedice browserul să efectueze acțiunea implicită pentru elementul respectiv.

Notă: Manipulatorul poate fi numit în mare parte cum doriți (de exemplu,function(billybob)‘). „e” înseamnă „event”, ceea ce pare a fi destul de standard pentru acest tip de funcție.

Deși „e.preventDefault()” este probabil cea mai frecventă utilizare a gestionarului de evenimente, obiectul în sine conține multe proprietăți și metode care pot fi accesate prin intermediul gestionarului de evenimente.

Informații foarte bune despre acest subiect pot fi găsite pe site-ul de învățare al jQuery, http://learn.jquery.com. Acordați o atenție deosebită la Utilizarea jQuery Core și Events secțiuni.

Peter Porfy

e nu are nicio semnificație specială. Este doar o convenție de a folosi e ca nume de parametru de funcție atunci când parametrul este event.

Acesta poate fi

$(this).click(function(loremipsumdolorsitamet) {
    // does something
}

de asemenea.

James Johnson

În acest exemplu, e este doar un parametru pentru acea funcție, dar este vorba despre event obiect care este trecut prin ea.

j08691

e este o prescurtare pentru obiectul evenimentului. De exemplu, ați putea dori să creați un cod pentru ancore care să anuleze acțiunea implicită. Pentru a face acest lucru, ar trebui să scrieți ceva de genul

$('a').click(function(e) {
    e.preventDefault();
}

Acest lucru înseamnă că atunci când un <a> este apăsată, împiedică acțiunea implicită a evenimentului click.

Deși este posibil să o vedeți adesea, nu este ceva ce trebuie să folosiți în cadrul funcției, chiar dacă ați specificat-o ca argument.

Gothburz

În jQuery e prescurtarea de la event, obiectul evenimentului curent. De obicei, este trecut ca parametru pentru ca funcția de eveniment să fie declanșată.

Demonstrație: Evenimente jQuery

În demo am folosit e

$("img").on("click dblclick mouseover mouseout",function(e){
        $("h1").html("Event: " + e.type);
}); 

Aș fi putut la fel de bine să folosesc event

 $("img").on("click dblclick mouseover mouseout",function(event){
            $("h1").html("Event: " + event.type);
    }); 

Același lucru!

Programatorii sunt leneși folosim o mulțime de prescurtări, în parte ne diminuează munca, în parte ajută la lizibilitate. Înțelegerea acestui lucru vă va ajuta să înțelegeți mentalitatea de a scrie cod.

Jason Liu

Astăzi tocmai am scris un post despre „De ce folosim litere ca „e” în e.preventDefault()?” și cred că răspunsul meu va avea un sens…

La început, să vedem sintaxa addEventListener

În mod normal, va fi:target.addEventListener(type, listener[, useCapture]);

Și definiție parametrilor lui addEventlistener sunt:

type :Un șir de caractere reprezentând tipul de eveniment care trebuie ascultat.

listener :Obiectul care primește o notificare (un obiect care implementează interfața Event) atunci când apare un eveniment de tipul specificat. Acesta trebuie să fie un obiect care implementează interfața EventListener sau o funcție JavaScript.

(Din MDN)

Dar cred că ar trebui remarcat un lucru:Atunci când folosiți funcția Javascript ca ascultător, obiectul care implementează interfața Event(obiect event) va fi atribuit automat la „primul parametru” al funcției.Deci, dacă folosiți funcția(e), obiectul va fi atribuit la „e” deoarece „e” este singurul parametru al funcției (cu siguranță primul!), atunci puteți folosi e.preventDefault pentru a preveni ceva….

să încercăm exemplul de mai jos:

<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>

rezultatul va fi : [obiect MouseEvent]5 și veți preveni evenimentul click.

dar dacă eliminați semnul de comentariu ca :

<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>

veți obține : 8 și un eroare: „Uncaught TypeError: e.preventDefault nu este o funcție la HTMLLInputElement. (VM409:69)”.

Cu siguranță, evenimentul click nu va fi împiedicat de data aceasta.Deoarece „e” a fost definit din nou în funcție.

Cu toate acestea,dacă schimbați codul în:

<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>

totul va funcționa din nou corect…veți obține 8, iar evenimentul click va fi împiedicat

Prin urmare, „e” este doar un parametru al funcției dvs. și aveți nevoie de un „e” în funcția dvs.() pentru a primi „obiectul evenimentului”, apoi efectuați e.preventDefault(). Acesta este, de asemenea, motivul pentru care puteți schimba „e” cu orice cuvânt care nu este rezervat de js.

keune

Este o referință la obiectul evenimentului curent

kavya
$(this).click(function(e) {
    // does something
});

În ceea ce privește codul de mai sus
$(this) este elementul care ca o anumită variabilă.
click este evenimentul care trebuie să fie efectuat.
parametrul e este trecut automat de la js la funcția dvs. care deține valoarea lui $(this) valoare și poate fi folosit mai departe în codul dvs. pentru a efectua o anumită operațiune.

Comentarii

  • e on a click handler conține evenimentul javascript al elementului pe care s-a făcut clic și nu valoarea lui $(this). –  > Por Gerben Jongerius.