Javascript 如何确定元素是否由jQuery包装?

Javascript 如何确定元素是否由jQuery包装?,javascript,jquery,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 $; 不是jQuery用户,这是未测试的,等等,但是 if (!(obj instanceof Element)) {

如何确定对象是否由jQuery包装

var obj = $('div');

if(obj is a jQuery wrapped object)
{
   then do something
}
我是Javascript领域的新手

提前谢谢。

给你:

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

不是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“类似数组”的对象

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


$.isArray()返回一个布尔值,指示该对象是否为JavaScript数组(而不是类似数组的对象,如jQuery对象)。

这有什么用呢?嗯。。。它会告诉您正在查看的变量是否是jQuery对象。。。我认为这是不言而喻的。。?我学到的一个技巧是,始终在作为jQuery对象的变量前面加上$(例如:
var$obj=$('div');
)。这确实有助于您记住正在使用的内容。如果有帮助,$只是jQuery函数的别名。因此,“obj instanceof$”也可以使用。这是最好的答案。jquery对象可能根本不“包装”HTML元素。由于现在不推荐使用
obj.size()
,因此您必须使用
obj.length
if (jQuery.isArray(element)) {
    // plain array object: []
} else {
    // jQuery wrapped object
}