获取元素的所有父元素,包括元素本身



我正在尝试创建一个包含所有元素的数组,这些元素位于用户在内容可编辑的div中单击的位置。

var els = [];
var target = event.target;
while (target){ //Create an array of parent elements
els.push(target); //Push target to the back of the array
target = target.parentNode; 
}

但我想知道是否可以使用jQuery将其简化为一行。jQuery.parents()几乎让我做到了,但它不包括第一个event.target

var els = $(event.target).parents();

有没有一种方法可以将元素本身包含在.parents()中,或者有更好的方法可以做到这一点?

andSelf怎么样?

var els = $(event.target).parents().andSelf();

我的会得到你,曾祖父母,祖父母,父母,自我。

如果你想要:self,parent,grandaparent,曾祖父母,试着用这个扩展Jquery:

$.fn.reverse = [].reverse;

然后做:

var els = `$(event.target).parents().andSelf().reverse();

示例:jsFiddle

您可以使用add:

var els = $(event.target).parents().add(event.target);

或者,如果你想用不同的顺序:

var els = $(event.target).add($(event.target).parents());

如果你需要的是一个数组(即不是jQuery对象),你可以使用反向:

var els = $(event.target).parents().add(event.target).get().reverse();

最新更新