javascript - 检测 jQuery 对象

标签 javascript jquery object

我正在为 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 */ }

有没有人知道更好的方法?

最佳答案

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

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

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

或者:

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

关于javascript - 检测 jQuery 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173432/

相关文章:

javascript - 如何刷新jquery对话框以供下次使用?

javascript - 将日期和时间字符串转换为带有时区的 moment.js

jquery - 站点计数器图像 - 如何将数字放入其中

javascript - jQuery Toggle 不会通过滚动停止切换

javascript - 函数或循环不工作

javascript - 如何将 Viewdata 添加到我的 Javascript 中?

javascript - 导入/要求 Vue.js 指令的最简洁方法?

javascript - 无法在 jQuery 中获取 DOM 元素

javascript - 如何对对象值数组求和并将它们分配给相关的键名

angularjs - Angular JS 分组对象