我正在开发一个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
。
所以我想知道在不应该有父母的情况下父母可以返回什么?
答案 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");