112

私は JavaScript/jQuery が初めてで、関数の作成方法を学んでいます。多くの関数が括弧内に (e) を含んでいます。私が何を意味するかをお見せしましょう:

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

関数が (e) の値を使用していないように常に見えるのに、なぜ頻繁に使用されるのでしょうか?

4

9 に答える 9

117

eeventイベント ハンドラーに渡されるオブジェクトの短い var 参照です。

イベント オブジェクトには、基本的に、イベント ハンドラーで使用できる多くの興味深いメソッドとプロパティがあります。

あなたが投稿した例では、MouseEvent

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

DEMO - マウス イベント DEMO の使用e.whiche.type

いくつかの有用なリファレンス:

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

于 2012-04-25T20:40:20.017 に答える
31

e特に意味はありません。eパラメータが のときに関数パラメータ名として使用するのは単なる慣習ですevent

かもね

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

同じように。

于 2012-04-25T20:45:09.677 に答える
8

その例でeは、 はその関数の単なるパラメーターですが、それeventを介して渡されるのはオブジェクトです。

于 2012-04-25T20:44:38.030 に答える
7

引数はイベントオブジェクトのe略です。たとえば、デフォルトのアクションをキャンセルするアンカーのコードを作成したい場合があります。これを行うには、次のように記述します。

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

これは、<a>タグがクリックされたときに、クリックイベントのデフォルトのアクションを防ぐことを意味します。

よく目にするかもしれませんが、引数として指定したとしても、関数内で使用する必要はありません。

于 2012-04-25T20:47:22.320 に答える
4

jQueryeではevent、現在のイベント オブジェクト。通常、イベント関数が発生するためのパラメーターとして渡されます。

デモ: jQuery イベント

私が使用したデモではe

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

私も使ったかもしれませんevent

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

同じこと!

プログラマーは怠け者で、多くの速記を使用します。部分的には作業が減り、部分的に読みやすさが向上します。それを理解すると、コードを書く際の考え方を理解するのに役立ちます。

于 2015-10-28T17:39:00.333 に答える
2

現在のイベント オブジェクトへの参照です。

于 2012-04-25T20:41:27.760 に答える
-1
$(this).click(function(e) {
    // does something
});

上記のコードを参照すると、
$(this)変数としての要素があります。
click実行する必要があるイベントです。
パラメータeは、js から値の$(this)値を保持する関数に自動的に渡され、コード内でさらに使用して何らかの操作を実行できます。

于 2019-08-08T12:35:23.893 に答える