109

a要素にクラスがあるかどうかをチェックし、ない場合はそれを追加する次のスクリプトに出くわしました。

if (!$("div").hasClass("a")){
   $("div").addClass("a");
}

jQueryはクラスがすでに存在する場合は追加しないため、これを次のように変更できます。

$("div").addClass("a");

ただし、最初に使用することでパフォーマンスが向上するのでしょうか、それとも、とにかくhasClass同じ方法を使用しaddClassてロジックを複製するのでしょうか。

4

3 に答える 3

179

jQueryも常に内からチェックするため、この.hasClass()チェックは役に立ちません。それはただの余分な仕事です。.addClass()

于 2012-11-13T10:18:21.210 に答える
13

ソースコードで確認できます:https ://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45を使用すると、クラスが存在するかどうかがチェックされaddClassます。

.hasClass()したがって、この場合にを使用する理由はありません。(要素にクラスがない場合にさらにアクションを実行したい場合は例外です。

于 2012-11-13T10:22:20.060 に答える
6

.hasClass()価値があるのは、私の限られたテストでパフォーマンスが向上したことです:http: //jsperf.com/jquery-hasclass-vs-addclass-and-removeclass

ただし、スタンドアロンの.removeClass()レポートがChromeで数倍遅い場合でも、1秒間に約70,000回の操作が行われます。

于 2013-09-05T13:43:47.027 に答える