2012-09-25 10 views
12

関数を実行する前に$(this)とクラスセレクタを使用できるかどうか疑問に思っています。

そうするのではなく、

$(this).toggleClass('open'); 
$('.closed').toggleClass('open'); 

$(".closed").add(this).toggleClass("open"); 

それが追加されます:実際に、上記の 'この' '.closed'

よろしく、

+0

私の(削除された)回答、間違った質問を無視してください。 – SpaceBison

答えて

21

の文脈の中であなたがadd()を使用することができますを選択します一方

$(this, '.closed').toggleClass('open'); 

thisの要素を一致する要素のセット(つまり.closed)に置き換えます。

+1

優れた答え、+1 :)また、要素にidがある場合は、このようなことができます。 (私はあなたのアプローチを知る前にこれをしていたでしょう) '$( '#' + this.id + '、.closed')toggleClass( 'open');' – Jashwant

+0

私はJashwantのソリューションを通常使っていましたが、それはかなり醜い見つける。 VisioNの..私はそれが好きです!これらの2つのソリューションのどちらが速いのか、 – Joel

+1

@Joeel彼らはほとんど同じ速度で動くべきです。しかし、[add()]ソリューションは、複数のセレクタよりわずかに(4%)遅い[jsperf shows](http://jsperf.com/add-vs-multiselector)です。つまり、 'add()'を使うことは、 'this'をjQuery要素のセットに追加する唯一の方法です。 – VisioN

関連する問題