2

我正在尝试创建用户在内容可编辑 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()或者有更好的方法吗?

4

2 回答 2

5

和Self怎么

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

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

如果你想要:自己、父母、祖父母、曾祖父母,请尝试使用以下方法扩展 Jquery:

$.fn.reverse = [].reverse;

然后做:

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

示例:jsFiddle

于 2012-12-06T17:03:39.763 回答
3

您可以使用添加

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();
于 2012-12-06T17:00:23.533 回答