我正在为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 */ }
有谁知道更好的方法吗?
答案 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;