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