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

时间:2012-12-06 16:59:18

标签: javascript jquery

我正在尝试创建一个包含用户在内容可编辑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()包含元素本身,还是有更好的方法可以做到这一点?

2 个答案:

答案 0 :(得分:5)

andSelf怎么样?

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

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

如果你想要:self,parent,grandparent,great-grandparent,试着用这个扩展Jquery:

$.fn.reverse = [].reverse;

然后做:

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

示例:jsFiddle

答案 1 :(得分:3)

您可以使用add

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

或者,如果您希望它们采用不同的顺序:

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

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

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