检测jQuery对象

时间:2010-07-04 01:39:34

标签: javascript jquery object

我正在为jQuery编写一个插件,我希望这样做,以便用户可以以任何形式将数据传递给插件。我解决了JSON或数组问题,但是我无法确定数据是否是jQuery对象。

data = $('#list li');
console.debug( $.isPlainObject(data) );   // false
console.debug( $.isArray(data) );         // false
console.debug( data[0].tagName == "LI" ); // true, but see note below

最后一个方法返回true,但无法保证用户的数据使用LI标记,因此我认为我需要这样的内容:

if ( $.isjQueryObject(data) ) { /* do something */ }

有谁知道更好的方法吗?

3 个答案:

答案 0 :(得分:9)

jQuery对象(或其别名$)是普通constructor function,所有jQuery对象都继承自jQuery.prototype对象(或其别名jQuery.fn )。

您可以使用instanceof运算符或isPrototypeOf方法检查其他对象的原型链中是否存在对象,例如:

function isjQueryObject(obj) {
  return obj instanceof jQuery;
}

或者:

function isjQueryObject(obj) {
  return jQuery.fn.isPrototypeOf(obj);
}

答案 1 :(得分:1)

jQuery对象只是一个元素集合,存储为数组,附加了附加功能和内容。所以基本上你可以像使用常规数组一样使用jQuery元素。

答案 2 :(得分:1)

怎么样:

var isJq = data instanceof jQuery;