2011-02-25 16 views
5

¿Cómo puedo detectar mediante programación si un objeto es un objeto jQuery? Por ejemplo:¿Cómo detectar mediante programación si un objeto es un objeto jQuery?

// 1. declare some variables 
var vars = [1, 'hello', ['bye', 3], $(body), { say: 'hi' }]; 

// 2. ??? : implement function that tests whether its parameter is a jQuery object 
function isjQuery(arg) { /* ??? */ } 

// 3. profit 
var test = $.map(vars, isjQuery); /* expected [ false, false, false, true, false ] */ 

Respuesta

4

Creo que se puede confiar en

if (vars[i] instanceof jQuery) { 
    // do something with this jQuery object 
} 

pero también me encontré con estos métodos here:

obj && obj.constructor == jQuery 
obj && obj.jquery 
+0

Esto no funcionó para mí a menos que use instanceof –

9

La forma más sencilla API-documentado es poner a prueba para la propiedad .jquery:

function isjQuery(arg) { 
    return !!arg.jquery; 
} 

Sin embargo, si usted quiere ser Seguro es un objeto jQuery y no algún otro objeto con una propiedad falsa de .jquery, las otras respuestas sugieren instanceof jQuery y probando también el trabajo del constructor.

(La propiedad .jquery es formalmente una cadena que indica la versión de jQuery, pero el ejemplo de API utiliza para probar si un objeto es un objeto jQuery.)

4

Hay varias formas, pero la más clara (en mi opinión) sería:

function isjQuery(arg) { return arg instanceof jQuery; } 
Cuestiones relacionadas