[解決済み] jQuery.click()とonClickの比較
質問
私は巨大なjQueryアプリケーションを持っており、クリックイベントに対して以下の2つのメソッドを使用しています。
最初の方法
HTML
<div id="myDiv">Some Content</div>
jQuery
$('#myDiv').click(function(){
//Some code
});
第二の方法
HTML
<div id="myDiv" onClick="divFunction()">Some Content</div>
JavaScriptの関数呼び出し
function divFunction(){
//Some code
}
私のアプリケーションでは、1つ目の方法と2つ目の方法のどちらかを使用しています。どちらが良いのでしょうか?パフォーマンス的に良いですか?そして標準的ですか?
解決方法は?
使用方法
$('#myDiv').click(function(){
は
より良い
は、標準的なイベント登録モデルに従っているためです。(jQuery
内部
は
addEventListener
と
attachEvent
).
でのイベント登録は基本的に
現代的な方法
は
控えめ
の方法でイベントを処理します。また、ターゲットに対して複数のイベントリスナーを登録するために
addEventListener()
を同じターゲットで使用することができます。
var myEl = document.getElementById('myelement');
myEl.addEventListener('click', function() {
alert('Hello world');
}, false);
myEl.addEventListener('click', function() {
alert('Hello world again!!!');
}, false);
なぜ addEventListener を使用するのですか? (MDNより)
addEventListenerは、イベントリスナーを登録するための方法として規定されています。 W3C DOMで定義されています。そのメリットは以下の通りです。
- 1つのイベントに対して、複数のハンドラを追加することができる。これは、DHTML ライブラリや Mozilla の拡張機能で、特に以下のような場合に便利です。 他のライブラリや拡張機能が使用されている場合でも、正常に動作する必要があります。
- リスナーがアクティブになるフェーズをより細かく制御できる(キャプチャ vs. バブリング)。
- HTML要素だけでなく、あらゆるDOM要素で動作します。
モダンイベント登録の詳細 -> http://www.quirksmode.org/js/events_advanced.html
その他の方法として HTML属性 , 例:
<button onclick="alert('Hello world!')">
または DOM要素のプロパティ , 例:
myEl.onclick = function(event){alert('Hello world');};
は古いものなので、簡単に上書きされてしまいます。
HTML属性 マークアップが大きくなり、読みにくくなるため、避けるべきです。コンテンツ/構造と動作の懸念がうまく分離されず、バグが見つかりにくくなる。
の問題点は DOM 要素のプロパティ メソッドは、1つのイベントにつき1つのイベントハンドラしか要素にバインドできないことを意味します。
伝統的なイベントハンドリングの詳細 -> http://www.quirksmode.org/js/events_tradmod.html
MDNリファレンス https://developer.mozilla.org/en-US/docs/DOM/event
関連
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] JavaScript / jQuery のイベントバインディングを Firebug などでデバッグするには?
-
[解決済み] '$(this)' と 'this' の違いは何ですか?
-
[解決済み] jQuery テキストエリアでのカーソル位置の設定
-
[解決済み] 子アンカーがクリックされたときに、親のonclickイベントが発生しないようにするにはどうすればよいですか?
-
[解決済み】jQueryのクリックイベントが複数回発生する件
-
[解決済み】JavaScriptでdivを表示・非表示にする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
要素ツリー制御によるvueTreeテーブル
-
jsを使った簡単な照明スイッチのコード
-
vueにおけるfilterの適用シーンについて解説します。
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】React Nativeアプリをターミナルから実行するとエラーが発生する(iOS)
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
JavaScriptのStringに関する共通メソッド
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方
-
[解決済み] なぜHTMLでonClick()を使うのは悪い習慣なのですか?