Javascript / jQuery'de (e) ne anlama geliyor?


96

JavaScript / jQuery'de yeniyim ve işlevlerin nasıl yapılacağını öğreniyorum. Parantez içinde (e) ile birçok işlev kırpılmıştır. Sana ne demek istediğimi göstereyim:

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

Her zaman işlevin (e) değerini bile kullanmadığı görülür, öyleyse neden bu kadar sık ​​oradadır?

Yanıtlar:


103

eeventolay işleyicilerine iletilecek nesne için kısa değişken referansıdır .

Olay nesnesi, aslında olay işleyicilerinde kullanılabilen birçok ilginç yönteme ve özelliğe sahiptir.

Gönderdiğiniz örnekte, bir tıklama işleyicisi olan MouseEvent

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

DEMO - Fare Olaylar kullanımları DEMOe.whichvee.type

Bazı faydalı referanslar:

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


lol, bu neredeyse saçma bir soru gibi görünüyor, ama asla daha az değil, doğru yerde. Normal js ile karşılaştırıldığında kullanımının bir örneğiyle daha fazla cevap vermek isteyebilirsiniz (bir dif var değil, ama nasıl
jQuery'de

@ SpYk3HH Kabul Edildi. Bunu yapmayı planlıyorum.
Selvakumar Arumugam

@SelvakumarArumugam Yani aynı şey olduklarından pek emin değilim. Görünüşe göre biri w.Event döndürüyor ve diğeri MouseEvent döndürüyor. Yukarıdaki örnek için yeterince benzer olduklarını düşünüyorum, ancak $ (document) .on ('click', '.btn', e => {console.log (e); console.log (event)} durumunda ); ikisi farklı. Özellikle e.currentTarget ve event.currentTarget için. Bu durumda, e.currentTarget size ihtiyacınız olanı verecektir, ancak event.currentTarget tıkladığınız düğmeyi değil, belgeyi döndürür.
Adam Youngers

Yanıtlara baktığımda olay === e.originalEvent ve e'nin biraz daha fazla ayrıntı içerdiğini söyleyebilirim.
Adam Youngers


46

SORUMLULUK REDDİ: Bu, bu özel gönderiye çok geç bir yanıttır, ancak bu soruya çeşitli yanıtları okurken, yanıtların çoğunun yalnızca deneyimli kodlayıcılar tarafından anlaşılabilecek terminoloji kullandığını gördüm. Bu cevap, orijinal soruyu akılda yeni başlayan bir izleyici ile ele alma girişimidir.

Giriş

Küçük ' (e) ' şeyi aslında Javascript'te olay işleme işlevi adı verilen bir şeyin daha geniş kapsamının bir parçasıdır. Her olay işleme işlevi bir olay nesnesi alır. Bu tartışmanın amacı için, bir nesneyi , diğer dillerdeki nesneler gibi , bir dizi özellik ( değişken ) ve yöntem ( işlev ) barındıran bir "şey" olarak düşünün . Küçük (e) şeyinin içindeki ' e ' tutacağı, nesneyle etkileşime girmenizi sağlayan bir değişken gibidir (ve değişken terimini ÇOK gevşek bir şekilde kullanıyorum).

Aşağıdaki jQuery örneklerini inceleyin:

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

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

Açıklama

  • "#someLink", öğe seçicinizdir (hangi HTML etiketi bunu tetikleyecektir).
  • "tıklama" bir olaydır (seçilen öğe tıklandığında).
  • "işlev (e)", olay işleme işlevidir (olayda nesne oluşturulur).
  • "e" nesne işleyicidir (nesne erişilebilir hale getirilir).
  • "preventDefault ()", nesne tarafından sağlanan bir yöntemdir (işlev).

Ne oluyor?
Bir kullanıcı "#someLink" kimliğine(muhtemelen bir bağlantı etiketi)sahip öğeyi tıkladığında,anonim bir işlev, "işlev (e)" çağırınve elde edilen nesneyi bir "e" işleyicisine atayın. Şimdi bu işleyiciyi alın ve yöntemlerinden birini çağırın, "e.preventDefault ()" , bu, tarayıcının o öğe için varsayılan eylemi gerçekleştirmesini engellemelidir.

Not: Tutamaç, istediğiniz herhangi bir şekilde adlandırılabilir (yani, ' function (billybob) '). "E", bu tür bir işlev için oldukça standart görünen "olay" anlamına gelir.

'E.preventDefault ()' muhtemelen olay işleyicisinin en yaygın kullanımı olsa da, nesnenin kendisi, olay işleyicisi aracılığıyla erişilebilen birçok özellik ve yöntem içerir.

Bu konuyla ilgili gerçekten iyi bazı bilgiler jQuery'nin öğrenme sitesinde bulunabilir, http://learn.jquery.com . JQuery Core ve Olayları Kullanma bölümlerine özellikle dikkat edin .


29

eözel bir anlamı yok. Bu e, parametre olduğunda işlev parametresi adı olarak kullanmak için bir kuraldır event.

Olabilir

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

yanı sıra.


8

Bu örnekte, ebu işlev için sadece bir parametredir, ancak eventiçinden geçen nesnedir.


7

eArgüman olay nesnesi için kısa. Örneğin, varsayılan eylemi iptal eden bağlantılar için kod oluşturmak isteyebilirsiniz. Bunu yapmak için şöyle bir şey yazarsınız:

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

Bu, bir <a>etiket tıklandığında, tıklama etkinliğinin varsayılan eylemini engellemeniz anlamına gelir .

Sık sık görseniz de, bir argüman olarak belirtmiş olsanız bile, işlev içinde kullanmanız gereken bir şey değildir.


4

JQuery ekısaltmasında event, geçerli olay nesnesi. Genellikle olay işlevinin tetiklenmesi için bir parametre olarak iletilir.

Demo: jQuery Olayları

Demoda kullandım e

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

Ben de kullanmış olabilirim event

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

Aynı şey!

Programcılar tembeldir, çok fazla kısaltma kullanırız, kısmen işimizi azaltır, kısmen okunabilirliğe yardımcı olur. Bunu anlamak, kod yazma mantığını anlamanıza yardımcı olacaktır.


4

Bugün "e.preventDefault () 'da neden" e "gibi harfleri kullanıyoruz?" Hakkında bir yazı yazdım. ve sanırım cevabım biraz mantıklı olacak ...

İlk önce, addEventListener sözdizimini görelim.

Normalde şu olacaktır: target.addEventListener (tür, dinleyici [, useCapture]);

Ve tanımı addEventListener parametrelerin şunlardır:

tür: Dinlenecek olay türünü temsil eden bir dize.

dinleyici: Belirtilen türde bir olay meydana geldiğinde bir bildirim (Olay arayüzünü uygulayan bir nesne) alan nesne. Bu, EventListener arabirimini uygulayan bir nesne veya bir JavaScript işlevi olmalıdır.

(MDN'den)

Ancak belirtilmesi gereken bir şey olduğunu düşünüyorum: Dinleyici olarak Javascript işlevini kullandığınızda, Etkinlik arayüzünü (nesne olayı) uygulayan nesne otomatik olarak işlevin "ilk parametresine" atanacaktır. işlev (e), nesne "e" ye atanacaktır çünkü "e" işlevin tek parametresidir (kesinlikle ilki!), ardından bir şeyi önlemek için e.preventDefault'u kullanabilirsiniz ....

aşağıdaki örneği deneyelim:

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

sonuç: [nesne MouseEvent] 5 olacak ve tıklama olayını engelleyeceksiniz.

ancak yorum işaretini şu şekilde kaldırırsanız:

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

şunu alırsınız: 8 ve bir hata : "Yakalanmamış TypeError: e.preventDefault, HTMLInputElement'de bir işlev değildir. (VM409: 69)".

Kesinlikle, tıklama olayı bu sefer engellenmeyecektir. Çünkü işlevde "e" yeniden tanımlanmıştır.

Bununla birlikte, kodu şu şekilde değiştirirseniz:

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

her şey tekrar düzgün çalışacak ... 8 alacaksın ve tıklama olayı önlenecek ...

Bu nedenle, "e" işlevinizin yalnızca bir parametresidir ve "olay nesnesini" almak için işlevinizdeki () bir "e" ye ihtiyacınız vardır ve ardından e.preventDefault () işlemini gerçekleştirin. Bu aynı zamanda "e" yi js tarafından ayrılmamış herhangi bir kelimeye değiştirebilmenizin nedenidir.



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

Yukarıdaki koda atıfta bulunulduğunda
$(this), bazı değişken olan unsurdur.
clickgerçekleştirilmesi gereken olaydır.
parametre ejs'den değerin değerini tutan fonksiyonunuza otomatik olarak aktarılır $(this)ve bazı işlemler yapmak için kodunuzda daha fazla kullanılabilir.


Bir tıklama işleyicisindeki e, tıklanan öğenin javascript olayını içerir, $ (this) değerini değil.
Gerben Jongerius
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.