私は最近、同僚とコーディング プラクティスの違いについて話し合っていました。そこで、彼のイベント ハンドラーで上記の 2 つのメソッドを過度に使用していることについて問題を提起しました。具体的には、それらはすべてこのように見えます...
$('span.whatever').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
/* do things */
});
彼は、これは予期せぬ問題を減らしながら、クロスプラットフォームのサポートを改善する良い方法であると主張しています。
皆さんへの私の質問: 彼が正しければ、なぜ jQuery チームはすべてのイベント ハンドラーにグローバルに適用されるこの動作を実装しなかったのですか? 事実上、メソッドが独立して使用できるという理由だけで彼が間違っているというのが私の推測ですが、誰が知っているのでしょうか... あなたの洞察は大歓迎です。
--
更新:簡単な速度テストを行ったところ、これら 2 つの機能が原因で少し抵抗がありましたが、特に目立つものはありませんでした。それでも、とりわけ、それらを慎重に使用する正当な理由があると思います。
$('span.whatever').on('click', function(e) {
var start = new Date();
for (i = 0; i < 999999; i++) {
e.preventDefault();
e.stopPropagation();
}
console.log( new Date() - start );
});
上記はそのままで約 9.5 秒、関数呼び出しをループから外した場合は約 2.5 秒を記録しました。