如何找出元素是否被jQuery包装?

时间:2009-08-13 09:46:12

标签: javascript jquery

如何判断一个对象是否被jQuery包装。

var obj = $('div');

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

我是Javascript World的新手。

提前致谢。

5 个答案:

答案 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元素,但希望这并不难实现。