あなたが見た、書いた、または避けるべき JQuery の悪い/最悪のプラクティスは何ですか?
4 に答える
避けるべきことは、すべての行で「使いやすい」セレクターをもう一度使用することです。これは、セレクターの JavaScript 実装はそれほど効率的ではないためです。もちろん、jQuery の連中はそれを最適化していますが、できるだけ使用しない方がよいと思います。
したがって、これは悪い習慣です。
$("li ul span").show();
$("li ul span").toggleClass("bubu");
連鎖はいいぞ
$("li ul span").show().toggleClass("bubu");
また、ローカル変数に記憶することも悪くありません。
var allspans = $("li ul span");
allspans.show();
allspans.toggleClass("bubu");
私がよく目にするのは次の2つです。
まず、クリック イベントでは、次のid
ように にアクセスします。
$("a").click(function(e){
var id = $(this).attr('id');
});
これにより、DOM ノードの周りに新しい jQuery オブジェクトが作成され、関数が呼び出されます。以下が正しい方法です。
$("a").click(function(e){
var id = this.id;
});
注: も表示されますが$(this).attr('href')
、これは、jQuery がブラウザー間で正規化する方法により正しいものです。
2 つ目は、DOM ノード以外のものをscope
jQuery 呼び出しのパラメーターに渡します。
$(".child", $(".parent")).doSomething();
// or
$(".child", ".parent").doSomething();
これを行うことによる速度の向上はまったくありません。速度の向上が見られるのは、DOM 要素が既にある場合です。
$('div').click(function(){
$('img', this).doSomething(); // This is good
});
James Padolsey は、jQuery コードの匂いに関する優れた記事を書いています。読むことをお勧めします。
まだ古いドキュメントの準備ができている関数を使用しています:
$("document").ready(function(){ });
非常に一般的な代わりに:
$(function(){ });
それは本当に悪いことではありませんが、人々が新しい API に慣れていないことを示しています。