如何查找对象是否被jQuery包装。如何找出元素是否被jQuery包装?
var obj = $('div');
if(obj is a jQuery wrapped object)
{
then do something
}
我是Javascript世界中的新手。
在此先感谢。
如何查找对象是否被jQuery包装。如何找出元素是否被jQuery包装?
var obj = $('div');
if(obj is a jQuery wrapped object)
{
then do something
}
我是Javascript世界中的新手。
在此先感谢。
在这里你去:
var isJQuery = obj instanceof jQuery; // or obj instanceof $;
如果它对OP有帮助,$是简单的jQuery函数的别名。由于这个原因,“obj instanceof $”也可以工作。 – 2009-08-13 10:34:52
...欢迎来到俱乐部,karim。 :) – 2009-08-13 10:35:27
很酷的东西。我不知道这一点。 – 2009-08-13 10:47:50
不是一个jQuery用户,这是未经测试等,但
if (!(obj instanceof Element))
{
// ...
}
可以工作,除非jQuery不会在其包装奇怪的事情。当然,这确实需要你知道obj永远不可能是非jQuery,非DOM元素,但希望这并不难实施。
您可以测试这样的:
if(obj instanceof jQuery) {
// ...
}
然而,这是不完全正确的说,HTML元素被“包装”在一个jQuery对象,而jQuery对象是零个或多个HTML集合元素。所以,如果你真的要小心,你可能首先测试它是否包含在所有的任何元素,如下所示:
if(obj instanceof jQuery && obj.length > 0) {
var element = obj[0];
// do something with element
}
这是最好的答案。一个jQuery对象可能根本不会“包装”HTML元素。由于'obj.size()'现在已被弃用,不过你必须使用'obj.length'。 – 2015-05-09 16:50:36
if (obj.jquery) {
/* Do something */
}
这是最简单的方法。检查对象的构造函数是另一种选择,但请注意,它不适用于全局上下文(例如,在父页面和框架之间)。
如果“元素”var是一个或另一个,此检查可以帮助将数组对象与jQuery“数组式”对象区分开来。
if (jQuery.isArray(element)) {
// plain array object: []
} else {
// jQuery wrapped object
}
从jQuery的文档:
$ .isArray()返回一个布尔值,表示对象是否是JavaScript阵列(未阵列状物体,诸如一个jQuery对象)。
这将使用什么? – rahul 2009-08-13 09:48:48
好吧...它会告诉你,如果你正在看的变量是一个jQuery对象...我认为这是不言而喻的..?我选择的一个技巧是始终将我的变量作为jQuery对象的前缀加上$(例如:'var $ obj = $('div');')。这真的可以帮助你记住你正在处理的事情。 – nickf 2009-08-13 10:42:31