JQuery の bind() を使用してイベントをバインドすることは、単純に onclick='bla(this)' を実行するよりも優れていると考えられていますか?なぜですか?
ありがとう !
JQuery の bind() を使用してイベントをバインドすることは、単純に onclick='bla(this)' を実行するよりも優れていると考えられていますか?なぜですか?
ありがとう !
Unobtrusive JavaScript (UJS)がニューノーマルだからです。
私にとっては、マークアップとビヘイビアの分離が最大の利点ですが、マークアップには便利な機能が他にもあり、誰もがさまざまな側面を好みます。
@Esailja は、作業のレベル、ブラウザーの互換性、ブラウザーの回避策などの点で、 jQuery が UJSをはるかに簡単にすることを正しく指摘しています。UJS は jQuery に依存していませんが、JS ライブラリによって、より幅広い機能で実行可能になっています。
jQuery イベントを使用すると、6 年分のバグ修正、イベント オブジェクトの正規化、名前空間、元は独自の IE イベントおよびイベント委任であった mouseenter、mouseleave、focusin、focusout などのイベントのサポートが得られます。
任意の種類の js (jQuery だけでなく) に関連付けられたイベントを使用すると、次のことが得られます。
そして、html を動的に生成している場合:
コードを生成するために文字列を連結する必要がないため、他のコードと同じようにイベント ハンドラー コードを記述するだけで、最初に JavaScript 文字列として解釈され、次に html によって文字列が解釈されることを心配する必要がありません。次に、javascriptコードとして(はい、3つのフェーズ。最初のリビジョンでは次の権利さえ得られませんでした):
var html = '<div onclick="alert(\''+someVar+'\'+\'hello\');"></div>'
書くのは簡単ではありません。比較する
$("<div>", {
click: function () {
alert(someVar + "hello");
}
});
私の経験では、抽象化には代償が伴いますが、抽象化を使用することの利点に対して重み付けする必要があります。
jQuery の場合、それによって節約される時間は、どの欠点よりもはるかに重要であることがわかりました。例を挙げると、標準の JavaScript で次の例をどのようにコーディングしますか。
$("ul").on("click", "li", function(){ });
この jQueryメソッドは、現在および将来のすべての li 要素にイベント ハンドラーをアタッチします。
この機能を実装するのは簡単な作業ではありません。jQuery を使用することで、ブラウザの違いを抽象化し、プログラミングに集中できる高品質のコード ベースを使用できます。