要素にクラスa
があるかどうかを確認し、ない場合は追加する次のスクリプトに遭遇しました:
if (!$("div").hasClass("a")){
$("div").addClass("a");
}
JQueryは既に存在するクラスを追加しないため、これを次のように変更できます。
$("div").addClass("a");
ただし、最初にhasClass
を使用することでパフォーマンスが向上しますか、それともaddClass
と同じ方法を使用して、ロジックを複製しますか?
.hasClass()
チェックはjQuery 常にチェックする.addClass()
内からので、有用ではありません。余分な作業です。
ソースコードで確認できます。 https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45 クラスが存在するかどうかを確認addClass
を使用する場合。
したがって、この場合は.hasClass()
を使用する理由はありません。(例外は、要素にクラスがない場合にさらにアクションを実行したい場合です。 。)
それが価値があるものとして、私の限られたテストで.hasClass()
のパフォーマンスの改善があります: http://jsperf.com/jquery-hasclass-vs-addclass-and-removeclass
ただし、スタンドアロンの.removeClass()
がChromeで数倍遅いと報告した場合でも、1秒間に約70,000回の操作が発生します。