5

How can I programmatically detect if an object is a jQuery object? For example:

// 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 ] */

3 Answers 3

9

The easiest API-documented way is to test for the .jquery property:

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

However, if you want to be sure it's a jQuery object and not some other object with a fake .jquery property, the other answers suggesting instanceof jQuery and testing the constructor work too.

(The .jquery property is formally a string indicating the jQuery version, but the API example uses it to test whether an object is a jQuery object.)

Sign up to request clarification or add additional context in comments.

Comments

4

I think you can rely on

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

but I also found these methods here:

obj && obj.constructor == jQuery 
obj && obj.jquery 

Comments

4

There are several ways, but the clearest (in my opinion) would be:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.