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 で 1 行に減らすことができないかと考えていました。jQuery.parents()はほとんど私をそこに連れて行きますが、最初のものは含まれていませんevent.target

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

要素自体を含める方法はあります.parents()か、またはこれを行うより良い方法はありますか?

4

2 に答える 2

5

andSelfはどうですか?

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

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