$('<div>')。parent()返回什么?</div>

时间:2013-03-27 16:44:14

标签: 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(....);
}

在执行bind语句之前,我需要检查是否已将小部件添加到DOM中。如果它尚未添加到DOM中,那么我只需绑定this.element.bind(....)

问题是$('<div>').parent()返回一个jQuery对象!我原以为它会返回undefined

所以我想知道在不应该有父母的情况下父母可以返回什么?

6 个答案:

答案 0 :(得分:3)

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

但如果没有直接从DOM中删除对象但是父对象是

,则会产生误报

如果您想要可靠的检测,那么您应该使用jQuery.contains(document.documentElement, myDiv)

答案 1 :(得分:3)

始终返回一个对象。如果您想查看对象中是否有任何内容,可以查看.length == 0,那么$("<div>").parent().length == 0就是您的支票。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

所有jQuery DOM搜索和操作方法都返回一个包含0个或更多元素的jQuery集合。 $("<div>").parent()返回没有元素的集合(空集合)。您仍然可以在其上调用任何jQuery方法,但是如果不依赖于DOM元素,您可以做的事情非常有限。它将.length为零,并且在使用.each进行迭代时不会达到回调。

答案 4 :(得分:2)

我会检查jQuery对象的长度,因为jQuery总会返回一个对象。

答案 5 :(得分:0)

它将始终是父母,例如可以是身体

使用jquery数据来设置init标记

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