2009-08-13 13 views
13

Wie kann ich herausfinden, ob ein Objekt von jQuery Wrapped ist.Wie finde ich heraus, ob Element von jQuery umschlossen ist?

var obj = $('div'); 

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

Ich bin ziemlich neu in der Javascript-Welt.

Vielen Dank im Voraus.

+0

Und was wäre der Nutzen davon? – rahul

+0

gut ... es würde Ihnen sagen, wenn die Variable, die Sie betrachten, ein jQuery-Objekt ist ... dachte ich, das war offensichtlich ..? Ein Tipp, den ich mir vorgenommen habe, war, dass ich meinen Variablen, die jQuery-Objekte waren, immer ein $ vorangestellt habe (zB: 'var $ obj = $ ('div');'). Das hilft dir wirklich dabei, dich daran zu erinnern, mit was du arbeitest. – nickf

Antwort

23

Hier gehen Sie:

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

Wenn es das OP hilft, ist $ einfach ein Alias ​​für die jQuery-Funktion. Aus diesem Grund würde "obj instanceof $" auch funktionieren. –

+1

... und willkommen im Club, Karim. :) –

+0

coole Sachen. Ich wusste das nicht. –

-2

kein jQuery Benutzer, dies ist nicht getestet, etc., aber

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

arbeiten kann, es sei denn, jQuery seltsame Dinge in ihrer Verpackung tut. Natürlich müssen Sie wissen, dass obj niemals ein Nicht-jQuery-Element ohne DOM sein kann, aber hoffentlich ist das nicht schwer zu erzwingen.

1

Sie können wie folgt testen:

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

Allerdings ist es nicht ganz richtig zu sagen, dass das HTML-Element ist „verpackt“ in einem jQuery-Objekt, sondern das jQuery-Objekt eine Sammlung von null oder mehr ist HTML Elemente. Also, wenn Sie wirklich vorsichtig sein wollen, könnten Sie zunächst prüfen, ob es irgendwelche Elemente enthält überhaupt, wie folgt:

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

Dies ist die beste Antwort. Ein jquery-Objekt "wickelt" möglicherweise überhaupt keine HTML-Elemente ein. Da 'obj.size()' nun veraltet ist, musst du 'obj.length' verwenden. –

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

, dass der einfachste Weg ist. Das Überprüfen des Konstruktors des Objekts ist eine andere Option, aber beachten Sie, dass es nicht in globalen Kontexten (z. B. zwischen einer übergeordneten Seite und einem Rahmen) funktioniert.

0

Diese Prüfung kann helfen, ein Array-Objekt von einem jQuery- "array-like" -Objekt zu unterscheiden, wenn das "Element" var das eine oder das andere ist.

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

Von jQuery docs:

$ .isArray() gibt einen Booleschen der angibt, ob das Objekt ein JavaScript-Array ist (kein Array-ähnliches Objekt, wie ein jQuery-Objekt).

Verwandte Themen