如何判断一个对象是否被jQuery包装。
var obj = $('div');
if(obj is a jQuery wrapped object)
{
then do something
}
我是Javascript World的新手。
提前致谢。
答案 0 :(得分:24)
你走了:
var isJQuery = obj instanceof jQuery; // or obj instanceof $;
答案 1 :(得分:2)
if (obj.jquery) {
/* Do something */
}
这是最简单的方法。检查对象的构造函数是另一种选择,但请注意它不能在全局上下文中工作(例如,在父页面和框架之间)。
答案 2 :(得分:1)
你可以这样测试:
if(obj instanceof jQuery) {
// ...
}
但是,将HTML元素“包装”在jQuery对象中并不完全正确,而jQuery对象是零个或多个HTML元素的集合。所以,如果你真的要小心,你可以先测试它是否包含任何元素,如下所示:
if(obj instanceof jQuery && obj.length > 0) {
var element = obj[0];
// do something with element
}
答案 3 :(得分:0)
这个检查可以帮助区分数组对象和jQuery"类似数组"对象,如果"元素" var是一个或另一个。
if (jQuery.isArray(element)) {
// plain array object: []
} else {
// jQuery wrapped object
}
来自jQuery docs:
$ .isArray()返回一个布尔值,指示对象是否是JavaScript数组(不是类似数组的对象,如jQuery对象)。
答案 4 :(得分:-2)
不是jQuery用户,这是未经测试的等等,但是
if (!(obj instanceof Element))
{
// ...
}
可能会起作用,除非jQuery在包装中做了奇怪的事情。当然,这确实需要你知道obj永远不会是非jQuery,非DOM元素,但希望这并不难实现。