如何以编程方式检测一个对象是否是jQuery对象?

5
如何以编程方式检测对象是否为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 ] */
3个回答

9

最简单的API文档方式是测试.jquery属性:

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

然而,如果您想确保它是一个jQuery对象而不是带有假的.jquery属性的其他对象,则其他建议使用instanceof jQuery和测试构造函数的答案也可以起作用。

(.jquery属性正式上是指示jQuery版本的字符串,但API示例将其用于测试对象是否为jQuery对象。)


4
有几种方法,但我认为最清晰的方法是:

有几种方法,但我认为最清晰的方法是:

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

4
我认为你可以依赖它。
if ( vars[i] instanceof jQuery ) {
  // do something with this jQuery object
}

但我在这里也找到了这些方法(链接)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接