私はDOMを次のように呼び出すことで取得する要素のjQueryセットを持っています:
$(".some-selector");
私のすべての要素は、それぞれ独自の行にあるDIVです。私のDIVにはCSSが設定されています(特に)
display: inline-block;
これにより、ブロック要素としてレンダリングされなくなります(それぞれが独自の行にあります)。
問題は、各要素間のドキュメントに改行があるため、これらのDIVがレンダリングされるときに、それらの間にスペースがあることです。私はそれで快適です。もちろん、これらのスペースを取り除くfloat:left
を使用することもできますが、コンテナーのサイズ変更などの他の問題が発生するため、これは私が望んでいることではありません。
そう。問題は、jQueryセットでこれらの要素の順序を操作してから、それらを再レンダリングすることです。私が本質的にしていることは:
$(".some-selector").detach().manipulate().appendTo(".container");
// or equivalent
$(".container").append($(".some-selector").detach().manipulate());
問題は、DOMに再挿入されることですが、改行やスペースはありません...
要素をDOMに追加するときに、これらの改行を元に戻すにはどうすればよいですか?
map
を使用して、各DIVの後に単一スペースのTextNodeを配置できます。
$('.some-selector').detach().manipulate().map(function() {
return [this, document.createTextNode(' ')];
}).appendTo('.container');
Šimeのコードには注意点があります。最後の要素の後にスペースも追加されます。
そのスペースを回避するバージョンは次のとおりです。
$('.some-selector').detach().manipulate().map(function (index, element) {
return index === 0 ? element : [document.createTextNode(' '), element];
}).appendTo('.container');