2009-08-13 16 views
13

¿Cómo puedo averiguar si un objeto está envuelto por jQuery.¿Cómo averiguar si el elemento está envuelto por jQuery?

var obj = $('div'); 

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

Soy bastante nuevo en Javascript World.

Gracias de antemano.

+0

¿Y cuál sería el uso de esto? – rahul

+0

bueno ... te diría si la variable que estás viendo es un objeto jQuery ... pensé que era evidente ...? un consejo que recogí fue siempre prefijo mis variables que eran objetos jQuery con un $ (por ejemplo: 'var $ obj = $ ('div');'). Esto realmente te ayuda a recordar con qué estás trabajando. – nickf

Respuesta

23

Aquí van:

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

Si ayuda al OP, $ es simplemente un alias de la función jQuery. Por esta razón, "obj instanceof $" también funcionaría. –

+1

... y bienvenidos al club, karim. :) –

+0

cosas interesantes. yo no sabía esto –

-2
No

un usuario jQuery, esto no se ha probado, etc, pero

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

puede funcionar, a menos jQuery hace cosas extrañas en su envoltorio. Por supuesto, esto requiere que sepas que obj nunca puede ser un elemento que no sea jQuery ni DOM, pero es de esperar que no sea difícil de aplicar.

1

Puede probar de esta manera:

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

Sin embargo, no es del todo correcto decir que el elemento HTML está "envuelto" en un objeto jQuery, más bien el objeto jQuery es una colección de cero o más HTML elementos. Por lo tanto, si realmente desea tener cuidado de que usted podría probar primero si contiene ningún elemento en absoluto, de la siguiente manera:

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

Esta es la mejor respuesta. Un objeto jquery podría "envolver" ningún elemento HTML en absoluto. Como 'obj.size() 'ahora está en desuso, tendrás que usar' obj.length' sin embargo. –

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

Esa es la forma más simple. Comprobar el constructor del objeto es otra opción, pero tenga en cuenta que no funcionará en contextos globales (por ejemplo, entre una página principal y un marco).

0

Esta comprobación puede ayudar a distinguir un objeto de matriz de un objeto jQuery "similar a una matriz" si el "elemento" var es uno u otro.

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

De jQuery docs:

$ .isArray() devuelve un valor booleano que indica si el objeto es una matriz de JavaScript (no un objeto de matriz-similares, tales como un objeto jQuery).

Cuestiones relacionadas