2

domから要素を取得するとします。

[<div id="generic-wrapper"> ... </div>]

内部にすべての要素を含めるようにフラット化するにはどうすればよいですか?

編集:「generic-wrapper」は任意のIDであり、何でもかまいません。ラッパー内のラッパーのように、ネストすることもできます。

EDIT2:最後の配列に元の配列のすべてのコンテンツを含めてフラット化したい。これにはラッパーが含まれます。私が説明しているような配列を構築して反復する体系的な方法はありますか?混乱をお詫び申し上げます。

4

5 に答える 5

4

それらをすべて一度に選択します。

var $allElements = $("#wrapper,#wrapper *")

ラッパー要素自体を除外するかどうかはわかりませんが、除外する場合は、を使用して"#wrapper *"ください。

于 2012-08-09T01:55:49.767 に答える
3

アップデート:

「単純な」解決策:

var domElements = [<div id="generic-wrapper">...</div>];

$.merge( domElements, $(domElements).find('*'));



より良い解決策:

あなたがやろうとしていることは、dom要素の配列が与えられた場合、それらの子孫のそれぞれを配列に追加することのように聞こえます。目的のDOM操作にjQueryを使用している場合は、それらを直接選択する必要があります(以下のコードサンプルを参照)。これにより、基本的な配列のインデックス作成に使用できる基本的な配列構造を持つjQueryオブジェクトが返されます。真の配列を取得する必要がある場合は、オブジェクトの.toArray()メソッドを使用できます。ただし、jQueryオブジェクトは、一致したすべての要素を簡単に操作できるため(また、を使用してそれらを反復処理できるため)、通常はより便利です.each()

とそのすべての子孫を選択します(idが変数に格納されている場合は、+変数名#wrapperに置き換えます)。'#wrapper''#'

var domElements = $('#wrapper, #wrapper *');
于 2012-08-09T01:55:04.267 に答える
0

HTML文字列?

$('<div>').append($('#wrapper').clone()).html();
于 2012-08-09T01:53:19.430 に答える