2011-12-01 14 views
9

jqueryを使用して、そのテーブル行を選択したクラスをクラスに追加しようとしています。それは、すでに割り当てられたクラスがあった一部だけの事例で働いていなかった、いくつかの理由toggleclassとaddclassの違い

$(this).parents("tr").toggleClass("over", this.clicked);    

-

私は当初、次のコードを使用していました。 私は任意のトラブルシューティングにあまりにもクレイジー行く前に、私は次のようにそれを変更 -

$(this).parents("tr").addClass("over", this.clicked);   

をこの新しいオプションは正常に動作しているように見えます。

私の質問は、上記のいずれかのオプションが他のものよりも優れているかどうかです。addClassの代わりにtoggleClassを使用する必要がありますか、または十分なaddClassですか?

ありがとうございました。

答えて

12

addClassこれだけで、クラスを要素に追加します。

toggleClass一方、そのクラスをトグルして削除するか、そうでない場合は追加します。オプションでブール値(true/false)を使用してオブジェクトを追加するか(true)削除するかを決定します(偽)。

toggleClassは、おそらくthis.clickedfalseのインスタンスでは動作しませんでしたが、これは予想される動作です。 addClassで渡す引数は、常にクラスを追加するため、何の効果もありません。

結論:

使用toggleClassトグルクラスに対して、クラスを追加するためのaddClassを使用しています。

1

本当にあります。クラスを削除する予定がない場合は、addClassとします。当然、toggleClassでは、クラスを切り替えることができます。

+0

は、各メソッドの完全な説明のためのAPIリファレンスをご覧ください私は選択された行に追加します。したがって、私はaddClassだけで私が必要とするものを正確に達成できると思います。ありがとう – czuroski

3

.addClass()に2番目の引数を渡す必要はありません。常にクラスを追加します。

これが適切な動作であれば、それは正しい方法です。

+0

2番目の引数が不要であることに言及してくれてありがとう...私はそれを削除し、それは正常に働いた。 – czuroski

4

addClassがあなたのために働いている場合は、それに固執する必要があります。このメソッドは、異なる目的のために用意されています。 addClassは、特定のクラスが要素に存在することを保証しますが、toggleClassはクラスが存在しない場合は追加し、存在する場合は削除します。私は実際に通過しての前のテーブルにすべての行の特定のクラスを削除しています