JavaScript/jQueryは初めてで、関数の作成方法を学んでいます。多くの関数は、括弧内に(e)が付いています。私が何を意味するかをお見せしましょう:
$(this).click(function(e) {
// does something
});
関数は(e)の値さえ使用しないように見えるので、なぜ頻繁に存在するのでしょうか?
e
は、イベントハンドラーに渡されるevent
オブジェクトの短いvar参照です。
基本的に、イベントオブジェクトには、イベントハンドラーで使用できる興味深いメソッドとプロパティがたくさんあります。
投稿した例では、MouseEvent
であるクリックハンドラーです。
$(<element selector>).click(function(e) {
// does something
alert(e.type); //will return you click
}
DEMO -マウスイベントDEMOはe.which
およびe.type
を使用します
便利なリファレンス:
http://api.jquery.com/category/events/
http://www.quirksmode.org/js/events_properties.html
http://www.javascriptkit.com/jsref/event.shtml
免責事項:これはこの特定の投稿への非常に遅い回答ですが、この質問に対するさまざまな回答を読んでいると、答えのほとんどができる用語を使用していることに感銘を受けました経験豊富なコーダーのみが理解してください。この回答は、初心者の聴衆を念頭に置いて元の質問に取り組む試みです。
小さな '(e)'のことは、実際にはイベント処理関数と呼ばれるJavascriptの何かのより広い範囲の一部です。すべてのイベント処理関数は、イベントオブジェクトを受け取ります。この議論の目的のために、オブジェクトをプロパティ(variables)とメソッド(functions)、他の言語のオブジェクトとよく似ています。ハンドル(小さな(e))内の 'e'は、変数と対話して、オブジェクト(そして、用語variableを非常に大雑把に使用します)。
次のjQueryの例を検討してください。
$("#someLink").on("click", function(e){ // My preferred method
e.preventDefault();
});
$("#someLink").click(function(e){ // Some use this method too
e.preventDefault();
});
どうしたの?
ユーザーがid "#someLink"(おそらくアンカータグ)の要素をクリックすると、匿名関数が呼び出されます「function(e)」、結果オブジェクトをハンドラーに割り当てます "e"。次に、そのハンドラーを取得し、そのメソッドの1つ "e.preventDefault()"を呼び出します。これにより、ブラウザーはその要素に対してデフォルトのアクションを実行できなくなります。
注:ハンドルには、任意の名前を付けることができます(つまり、 'function(billybob) ')。 「e」は「イベント」の略で、このタイプの機能のかなり標準的なようです。
「e.preventDefault()」はおそらくイベントハンドラの最も一般的な使用方法ですが、オブジェクト自体には、イベントハンドラを介してアクセスできる多くのプロパティとメソッドが含まれています。
このトピックに関する非常に優れた情報は、jQueryの学習サイト http://learn.jquery.com にあります。 jQuery Coreの使用 および Events セクションに特に注意してください。
e
には特別な意味はありません。パラメーターがe
の場合、event
を関数パラメーター名として使用するのは単なる規則です。
かもね
$(this).click(function(loremipsumdolorsitamet) {
// does something
}
同じように。
その例では、e
はその関数の単なるパラメーターですが、それを介して渡されるのはevent
オブジェクトです。
e
引数は、イベントオブジェクトの略です。たとえば、デフォルトのアクションをキャンセルするアンカーのコードを作成できます。これを行うには、次のように記述します。
$('a').click(function(e) {
e.preventDefault();
}
これは、<a>
タグがクリックされたときに、クリックイベントのデフォルトアクションを防止することを意味します。
頻繁に表示される場合がありますが、引数として指定したとしても、関数内で使用する必要があるものではありません。
JQueryでは、e
は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);
});
同じこと!
プログラマーは怠け者であり、私たちは多くの略記法を使用します。一部は作業が減り、一部は読みやすくなります。それを理解することは、コードを書くことの考え方を理解するのに役立ちます。
今日、「e.preventDefault()で「e」のような文字を使用する理由」についての投稿を書きました。私の答えは意味があると思います...
最初に、addEventListenerの構文を見てみましょう
通常、次のようになります。target.addEventListener(type、listener [、useCapture]);
また、addEventlistenerのパラメーターのdefinitionは次のとおりです。
type:リッスンするイベントタイプを表す文字列。
listener:指定されたタイプのイベントが発生したときに通知を受け取るオブジェクト(Eventインターフェースを実装するオブジェクト)。これは、EventListenerインターフェースを実装するオブジェクト、またはJavaScript関数でなければなりません。
(MDNから)
ただし、注意すべき点が1つあると思います。 Javascript関数をリスナーとして使用すると、Eventインターフェイス(オブジェクトイベント)を実装するオブジェクトが自動的に"first関数のパラメータ」です。したがって、function(e)を使用すると、オブジェクトは「e」に割り当てられます。これは、「e」が関数の唯一のパラメータであるためです(間違いなく最初のパラメータです!)。 e.preventDefaultを使用して、何かを防ぎます。
以下の例を試してみましょう:
<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>
結果は次のようになります。[object MouseEvent] 5そして、クリックイベントを防止します。
ただし、次のようなコメント記号を削除すると:
<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>
8およびerror: "Uncaught TypeError:e.preventDefaultはHTMLInputElementの関数ではありません。(VM409:69)"を取得します。
確かに、今回はクリックイベントは防止されません。関数で "e"が再度定義されたためです。
ただし、コードを次のように変更した場合:
<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>
すべてが正常に機能するようになります... 8およびクリックイベントが防止されます ...
したがって、「e」は関数の単なるパラメーターであり、「event object」を受信してe.preventDefault()を実行するにはfunction()に「e」が必要です。これは、jsによって予約されていない単語に「e」を変更できる理由でもあります。
現在のイベントオブジェクトへの参照です