【问题标题】:Detecting jQuery Object检测 jQuery 对象
【发布时间】:2010-07-04 01:39:34
【问题描述】:

我正在为 jQuery 编写一个插件,我想制作它,以便用户可以以任何形式将数据传递给插件。我已经解决了 JSON 或数组问题,但在尝试确定数据是否为 ​​jQuery 对象时遇到了麻烦。

data = $('#list li');
console.debug( $.isPlainObject(data) );   // false
console.debug( $.isArray(data) );         // false
console.debug( data[0].tagName == "LI" ); // true, but see note below

最后一个方法返回true,但不能保证用户使用LI标签作为他们的数据,所以我想我需要这样的东西:

if ( $.isjQueryObject(data) ) { /* do something */ }

有人知道更好的方法吗?

【问题讨论】:

标签: javascript jquery object


【解决方案1】:

jQuery 对象(或其别名$)是一个普通的constructor function,所有jQuery 对象都继承自jQuery.prototype 对象(或其别名jQuery.fn)。

您可以使用instanceof 运算符或isPrototypeOf 方法检查一个对象是否存在于其他对象的原型链中,例如:

function isjQueryObject(obj) {
  return obj instanceof jQuery;
}

或者:

function isjQueryObject(obj) {
  return jQuery.fn.isPrototypeOf(obj);
}

【讨论】:

【解决方案2】:

jQuery 对象只是一个元素的集合,存储为一个数组,附加了附加的功能和东西。所以基本上你可以像使用常规数组一样使用 jQuery 元素。

【讨论】:

  • 您好,感谢您的回复,是的,我知道 jQuery 对象存储为对象数组,但我正在尝试找到一种简单的方法将其与其他对象区分开来。
  • 嗯,好吧,我建议您尝试@CMS 的解决方案。
【解决方案3】:

怎么样:

var isJq = data instanceof jQuery;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多