2009-08-13 20 views
13

オブジェクトがjQueryによってラップされているかどうかを調べるにはどうすればよいですか。要素がjQueryによってラップされているかどうかを調べるには?

var obj = $('div'); 

if(obj is a jQuery wrapped object) 
{ 
    then do something 
} 

私はJavascript Worldでかなり新しいです。

ありがとうございます。

+0

これをどのように使用しますか? – rahul

+0

まあ...あなたが見ている変数がjQueryオブジェクトであるかどうかは分かります...私はそれが自明であると思ったのですが?私が拾ったヒントの1つは、jQueryオブジェクトである変数に常に$(たとえば、 'var $ obj = $( 'div');')の接頭辞を付けることでした。これは実際にあなたが何を使っているのかを思い出すのに役立ちます。 – nickf

答えて

23

ここに行く:

var isJQuery = obj instanceof jQuery; // or obj instanceof $; 
+4

OPを助けるならば、$は単にjQuery関数のエイリアスです。このため、 "obj instanceof $"も機能します。 –

+1

...クラブにようこそ、カリム。 :) –

+0

クールなもの。私はこれを知らなかった。 –

-2

ないjQueryのユーザー、これはテストされていない、など

if (!(obj instanceof Element)) 
{ 
    // ... 
} 

にすぎないjQueryのはそのラッピングに奇妙なことを行いない限り、動作する可能性があります。もちろん、これは、objが非jQuery、DOM以外の要素になることはありませんが、実行するのは難しくないことを知る必要があります。

1

あなたはこのようにテストすることができます。

if(obj instanceof jQuery) { 
    // ... 
} 

しかし、それはjQueryオブジェクトは、ゼロ以上のHTMLのコレクションがあるむしろHTML要素は、jQueryオブジェクトに「ラップ」されると言うことは完全に正しいではありません要素。あなたは本当に慎重になりたい場合は、以下のように、あなたは、それがすべてで任意の要素が含まれているかどうかを最初にテストすることができます:最も簡単な方法はあります

if(obj instanceof jQuery && obj.length > 0) { 
    var element = obj[0]; 
    // do something with element 
} 
+0

これは最高の答えです。 jqueryオブジェクトは、HTML要素をまったくラップしないことがあります。 'obj.size()'は廃止予定ですので、obj.lengthを使用する必要があります。 –

2
if (obj.jquery) { 
    /* Do something */ 
} 

を。オブジェクトのコンストラクタをチェックすることは別のオプションですが、グローバルコンテキスト(たとえば、親ページとフレーム間)では機能しません。

0

このチェックは、「要素」varがどちらか一方である場合、配列オブジェクトとjQueryの「配列のような」オブジェクトを区別するのに役立ちます。 jQueryのドキュメントから

if (jQuery.isArray(element)) { 
    // plain array object: [] 
} else { 
    // jQuery wrapped object 
} 

$ .isArray()オブジェクトは、JavaScript配列(ないようなjQueryオブジェクトとしてアレイ状オブジェクト)であるかどうかを示すブール値を返します。

関連する問題