Javascript $(';<;div>;';)parent()返回什么?

Javascript $(';<;div>;';)parent()返回什么?,javascript,jquery,Javascript,Jquery,我正在开发一个jQuery小部件,它将事件附加到小部件的父级,但我无法判断它是否有父级 比如, var x = $('<div>'); x.mywidget(); ........... in mywidget _create : function () { var y = this.element.parent() === undefined ? this.element : this.element.parent(); y.bind(....); } var

我正在开发一个jQuery小部件,它将事件附加到小部件的父级,但我无法判断它是否有父级

比如,

var x = $('<div>');
x.mywidget();

........... in mywidget
_create : function () {
    var y = this.element.parent() === undefined ? this.element : this.element.parent();
    y.bind(....);
}
var x=$('');
x、 mywidget();
........... 在mywidget中
_创建:函数(){
var y=this.element.parent()==未定义?this.element:this.element.parent();
y、 绑定(…);
}
在执行bind语句之前,我需要检查小部件是否已添加到DOM中。如果它没有被添加到DOM中,那么我将只绑定
this.element.bind(..)

问题是
$(“”).parent()返回一个jQuery对象!我希望它会返回
未定义的


所以我想知道当它不应该有父对象时,它会返回什么父对象?

检查返回的jQuery对象的长度。如果您的div没有父对象,则
.parent
返回的jQuery对象将包含零个元素。

您可以使用
myDiv.parent().length
来了解jQuery集是否为空

但是,如果对象不是直接从DOM中删除的,而是从父对象中删除的,那么这将产生误报


如果您想要可靠的检测,那么应该使用
jQuery.contains(document.documentElement,myDiv)
它将始终返回一个对象。如果要查看对象中是否有任何内容,可以检查
.length==0
,因此
$(“”).parent().length==0
将是您的检查。

所有jQuery DOM搜索和操作方法都返回一个包含0个或更多元素的jQuery集合
$(“”)。parent()
返回没有元素的集合(空集合)。您仍然可以对它调用任何jQuery方法,但是如果不绑定到DOM元素,您所能做的事情是非常有限的。它的
.length
值为零,当使用
进行迭代时,不会到达回调。每个
我将检查jQuery对象的长度,因为jQuery将始终返回一个对象。

它将始终是父对象,例如可以是主体

例如,使用jquery数据设置init标记

var wasInit = ( $(this).data("mypluginwasinit") !== undefined );
if(wasInit) return;
$(this).data("mypluginwasinit","yes");

@MathewFoscarini LOL欢迎来到jQuery标签,西方最快的枪;)@马蒂莫罗夫!那东部呢?jQuery函数总是返回jQuery对象。这些对象可能包含也可能不包含任何元素:)目标是测试元素是否已添加到DOM中。所以不,它不会总是有父母。