2009-08-13 65 views
13

如何查找对象是否被jQuery包装。如何找出元素是否被jQuery包装?

var obj = $('div'); 

if(obj is a jQuery wrapped object) 
{ 
    then do something 
} 

我是Javascript世界中的新手。

在此先感谢。

+0

这将使用什么? – rahul 2009-08-13 09:48:48

+0

好吧...它会告诉你,如果你正在看的变量是一个jQuery对象...我认为这是不言而喻的..?我选择的一个技巧是始终将我的变量作为jQuery对象的前缀加上$(例如:'var $ obj = $('div');')。这真的可以帮助你记住你正在处理的事情。 – nickf 2009-08-13 10:42:31

回答

23

在这里你去:

var isJQuery = obj instanceof jQuery; // or obj instanceof $; 
+4

如果它对OP有帮助,$是简单的jQuery函数的别名。由于这个原因,“obj instanceof $”也可以工作。 – 2009-08-13 10:34:52

+1

...欢迎来到俱乐部,karim。 :) – 2009-08-13 10:35:27

+0

很酷的东西。我不知道这一点。 – 2009-08-13 10:47:50

-2

不是一个jQuery用户,这是未经测试等,但

if (!(obj instanceof Element)) 
{ 
    // ... 
} 

可以工作,除非jQuery不会在其包装奇怪的事情。当然,这确实需要你知道obj永远不可能是非jQuery,非DOM元素,但希望这并不难实施。

1

您可以测试这样的:

if(obj instanceof jQuery) { 
    // ... 
} 

然而,这是不完全正确的说,HTML元素被“包装”在一个jQuery对象,而jQuery对象是零个或多个HTML集合元素。所以,如果你真的要小心,你可能首先测试它是否包含在所有的任何元素,如下所示:

if(obj instanceof jQuery && obj.length > 0) { 
    var element = obj[0]; 
    // do something with element 
} 
+0

这是最好的答案。一个jQuery对象可能根本不会“包装”HTML元素。由于'obj.size()'现在已被弃用,不过你必须使用'obj.length'。 – 2015-05-09 16:50:36

2
if (obj.jquery) { 
    /* Do something */ 
} 

这是最简单的方法。检查对象的构造函数是另一种选择,但请注意,它不适用于全局上下文(例如,在父页面和框架之间)。

0

如果“元素”var是一个或另一个,此检查可以帮助将数组对象与jQuery“数组式”对象区分开来。

if (jQuery.isArray(element)) { 
    // plain array object: [] 
} else { 
    // jQuery wrapped object 
} 

从jQuery的文档:

$ .isArray()返回一个布尔值,表示对象是否是JavaScript阵列(未阵列状物体,诸如一个jQuery对象)。

相关问题