9

特定の順序で jQuery オブジェクトに要素を追加しようとしています。ただし、結果セットは DOM ツリーと同じ順序になります。例えば:

<div>one</div>
<span>two</span>
<p>three</p>

...

var $result = $("span").add("p").add("div");

$result[0] がスパン、$result[1] が p などの結果セットが必要です。ただし、順序は DOM と同じです。

私が意図しているように、.add() 以外に jQuery オブジェクトを構築する別の方法はありますか?

順序を指定するためにいくつかのデータプロパティをそれらに割り当て、それによって結果セットを並べ替えることができることを私は知っています。ただし、これはアプリ内で何十回も発生する必要があり、毎回注文データの値と並べ替えを割り当てなければならないのは非常に見苦しく、実装に時間がかかりすぎます。

4

3 に答える 3

9

ネイティブを使用できますArray.push

$.fn.push = function(selector) {
    Array.prototype.push.apply(this, $.makeArray($(selector)));
    return this;
};

var $result = $("span").push("p").push("div");

デモ: http://jsfiddle.net/ZUAcy/

jQuery は内部でこれを行っていると思うかもしれませんadd()が、実際には関数から pushStack を返し、セレクターを最適化します

于 2012-11-08T03:39:13.007 に答える
0

次のコードによって生成された順序付けられていない配列:

var $result = $("span").add("p").add("div");

次のコード行で順序付き配列に変換する必要があります。

var result=$("span").get().concat($("p").get(),$("div").get());
var $result=$(result);
于 2020-03-16T13:31:02.523 に答える