2016-09-24 8 views
2

myObjectに.exampleクラスがあるかどうかを確認したいところがたくさんあります。 私は$(」。クラス)として初期化中にあらかじめ定義されtemplateObjectでこれを行うことができます。またJQuery - Is()関数の最適化

if(myObject.Is(templateObject) 
{ 
    //Do stuff 
} 

を、私は直接クラス名を使用することができます。

if(myObject.Is('.example') 
{ 
    //Do stuff 
} 

をだから私は知りたい場合2番目の例では、すべての反復でDOMを使用してjQueryを検索するか、比較がより最適な方法で行われますか?どの例が良いですか?

+0

代わりに 'if(myObject.hasClass( 'example')'を使用してください。 – Mohammad

+1

基本的に同等ですセレクタが現在の要素に単に適用される標準的な '.matches()'メソッドに、セレクタが一致する場合に 'true'を返します。' someElement.matches( "。example") ' –

+0

@squint javascriptについて話しますか?私が知る限り、そのようなメソッドはありません。 – Mohammad

答えて

1

ここでは、IMO jquery hasClass()がより効率的です。これは、この目的のために特に作成されています。

if (myObject.hasClass('example')){ 
    // Code 
} 
-1

あなたの2つの例は同じではありません。 $('.example')を呼び出すと、クラス.exampleのすべての要素が見つかります。これをmyObject.is(templateObject)のテストとして使用すると、jQuery結果セットの要素の1つがと結果セットの要素の1つと等しいかどうかがテストされますtemplateObject 。彼らはismyObject要素myObjectがで見つけることができるかどうかをテストmyObject.is('.example')でクラスexample

を持っている場合でも、falseを返します後に次いで添加どこので、だから、myObject内に格納されているDOMElementsではtemplateObjectのリストにない場合セレクタ.example(これは完全なDOM検索を行いません。与えられた要素から、セレクタがより複雑な場合は、その親をたどるだけです)。これは常に動作しますが、既に他の人に言われているように、myObjectが特定のクラスを持っているかどうかをテストする場合は、hasClass

+1

ダウン投票者になるでしょうかこの情報の中で何が間違っているのかを説明することができますか? –