0

したがって、私のページでは、一連の要素を挿入します。たとえば、クラス名が「element」の場合、それらの一部は無効になり、追加のクラスは「disabled」になります。ここで、クリックイベントを無効になっていないすべての要素にバインドしたいのですが、パフォーマンスの面では、単に書く方がよいのではないかと思っていました。

$(".element:not(.disabled)") .live("click",function() { ...

または、クリックイベントを挿入時に個々の要素にバインドする必要がありますか?

ps私は.onが.liveに取って代わったことを知っていますが、現在はバージョン1.6.2を使用しているので、それを変更することはできません

4

3 に答える 3

3

一般的な経験則:パフォーマンスの問題として何かを特定するまで、最適化しないでください。

:not()ページに1万個の要素がある場合、セレクターが少し遅いことに気付くかもしれませんが、ページに1万個の要素がある場合、デザインに重大な問題があります。

私が思うに、ページには少数の(> 1と<100)要素があります。その場合、そのセレクターは問題なく機能します。

于 2012-08-24T09:32:09.000 に答える
2

まず.live()、jQueryのすべてのバージョンで非推奨になっているため、これ以上使用しないでください。私はこれを提案します:

$(document).on('click', '.element:not(.disabled)', function() {...});

セレクターとの比較はクリックが発生したときにのみ行われ、比較が行われると、ターゲットのクラス名をチェックするだけの非常に単純な比較であるため、これに関するパフォーマンスの問題はほとんどありません。

また、クリックはユーザー時間に発生するユーザーアクションであり、セレクターの比較はまったく複雑ではないため、遅延が目立つ可能性はほとんどありません(ここでは最大でミリ秒について話します)。

于 2012-08-24T09:34:50.817 に答える
1

パフォーマンスの問題に気付かない場合は、修正する必要はありません。

個人的には、クリックイベントを添付して、チェックを実行します。このような:

$(".element").on("click",function() { 
  var $this = $(this);
  if ($this.hasClass("disabled")) return;

  //Continue here
});

また、現在非推奨になっているのでは.onなく、を使用する必要があります。ドキュメント.live

于 2012-08-24T09:33:47.173 に答える