2011-09-09 3 views
0

でマークされた要素と一致するかどうかのチェック:セレクタは、私は一般的なjQueryのセレクタ(文字列)を持つ特定のクラス

var selector = '#files li div'; 

とクラスの名前:

var myClass = 'folder'; 

私が確認したいですセレクタが、クラスがmyClassに格納されている要素と一致する場合。それが動作

var match = $(selector).hasClass(myClass); 

、私はそれがjQueryのインスタンスを作成しないことができ、いくつかのより効率的なjQueryの方法が存在する可能性が考え: は限り今は)(方法hasClassを呼び出すために、セレクタのインスタンスを使用しましたセレクタに一致するすべての要素を取得します。
私の心配は、このチェックのためだけに作成されたインスタンスによって使用されるメモリですが、このインスタンスへの参照を返す/公開しない疑似クラスのメソッドの中にあります。

あなたは何か良いことを提案できますか?例でEDIT >

<は、私はちょうど簡単な問題を表現するために、それが定義されているので、アプリでは、私は、事前にそれを知らない「フォルダ」にはMyClassの値を設定して示しました。ユーザの行動によって。マッチした要素のどのがある場合
</EDIT >

+1

問題を誤解していない限り、#files li div.folder – Corbin

+0

を使用してください。 '$( '#files li div .folder')を確認してください。長さ ' – m90

+0

@ m90:' $( '#files li div.folder')。長さ – Matt

答えて

0

どちらの一意性 のIDを割り当てるか あなたが複数のインスタンスに

3

hasClass()を適用する場合は、クラスを作成するには、trueを返します指定されたクラス。 すべての場合はありません。

あなたは次のことを見つけるかもしれないが、あなたが望むよりです:

var match = $(selector).filter('.' + myClass); 

しかし、あなたは、その後にそれを簡素化することができます:

var match = $(selector + '.' + myClass); 

そして、あなたは、あなたが使用して残っ要素を持っているかどうかを確認したいです.length属性。メモリ使用量の心配の面では

if (match.length) // then some were matched! 

... はないを行います。 premature optimization is the root of all evil。ここでのメモリ使用量は小のです。あなたのプログラムを最適化したいのですが(現時点では必要ですか?)、何度も呼び出される関数を見たり、反復回数の多いループを見たり、DOM操作を見てifそれらを組み合わせることができます。 1つのjQueryセレクタは、という相対的な速度でプログラムの速度と異なるようにはしません。

+0

選択に**が含まれているかどうかを調べる**そのクラスに一致するほとんどの**要素がちょうど私が必要としているものなので、hasClass()を使用しました。だから私はおそらく、私が使った方法は正しいものだと思う。ありがとう! –

関連する問題