0

左のcss位置に基づいてdom要素を並べ替えるにはどうすればよいですか?

left10、20、30 パーセントの値を持つ 3 つの要素があり、 position: absolute.

DOMでは順番になっていますが、属性( )20, 10, 30に従って昇順に並べたいと思います。left10, 20, 30

3 つの要素はすべてdivid を持つa の中にありますparent

4

2 に答える 2

1

子要素を配列としてループしてソートできるようにする必要があります。次に、子要素を正しい順序で再接続する必要があります。これは、jQuery を使用しない純粋な JavaScript で実行できます。

var parent = document.getElemntById(parent),
    children = [];

// loop through the child nodes, add them to your array
// and remove them from the parent
for (var i = parent.childNodes.length-1; i >= 0; i--) {
    children.push(parent.childNodes[i]);
    parent.removeChild(parent.childNodes[i]);
}
// sort them based on the left property
children.sort(function(a,b){
    return window.getComputedStyle(a)['left'] - window.getComputedStyle(b)['left'];
});
// add them back to the parent in order
for (var i in children) {
    parent.appendChild(children[i]);
}
于 2012-10-09T19:08:58.810 に答える
0

基本的に、変更したい DOM 要素をループして、それらを配列に入れます。次に、必要なプロパティ (この場合はwindow.getComputedStyle(elem)['left']) で配列を並べ替えてから、配列が指示する順序で要素を再挿入します。

于 2012-10-09T18:59:20.410 に答える