Javascript 如何确定元素是否由jQuery包装?
如何确定对象是否由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)) {
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
}