2011-06-20 23 views
3

私は要素とその位置を格納するjsonオブジェクトを使って解決しました。今、私は簡単に要素の値を変更することができます。jquery要素コレクションのswitch要素位置

myJsonObject = {el:[pos: 1, el: element1], el2:[pos: 2, el: element2], etc} 

私はDOM要素、すなわちのコレクションであるオブジェクトがあります。私がする必要がどのような

var els = $('#myDiv div'); 

の位置を切り替えていますこのオブジェクトに含まれる2つの要素。たとえば、element[2]element[4]の代わりに、element[4]element[2]になります。私は配列にそれを行うには、配列のプロトタイプ機能を見つけるフォーラムを通じて読む

Reordering arrays

しかし鉱山が配列でない原因私は」それを使用することはできません。 JqueryはオブジェクトをmakeArrayという配列に変更する関数を持っていますが、オブジェクトとして保持する必要があります。そうでなければ、後でオブジェクトを反復処理するために必要なすべてのjqueryメソッドを使用できません。 誰もが考えていますか?

+0

何文脈ですか?なぜあなたはそれを並べ替える必要がありますか? – Neal

+0

こんにちは、私は 'spacecollective.org'のようなレイアウトをしています。私がいくつかの要素をクリックすると、クリックした人は、レイアウトを正しく保ち、順序を守るために、もう少しステップを進める必要があります。私ははっきりしているかどうかはわかりませんが、spacecollectiveを見れば、 (行の最後の2つの要素をクリックするだけです)。 – hcvitto

答えて

1

jQueryの選択は、単なる配列を増強しているので、あなたは直接配列表記を使用してそれらを変更することができます。

var selection = $('#myDiv div'); 
var tmp = selection[2]; 
selection[2] = selection[4]; 
selection[4] = tmp; 

あなたのやっていることが良いアイデアだとは思っていませんが、上記はうまくいくはずです。あなたはノードの配列、またはのNodeListを持っている場合は別として、一般的に、そしてあなたが$()に引数として渡すことで、jQueryの選択にそれを回すことができるよう


var nodes = documents.getElementsByTagName('p'); // Returns an ordinary NodeList 
$(nodes).hide(); // You can run JQuery methods on the NodeList by passing it to $() 
0

あなたはこのような何か(クレイジーコード、同意)を試すことができます。

var els = $('#myDiv div'); 

var el2 = els.eq(1); // second element in collection 
var el2clone = el2.clone(true); 
var el4 = els.eq(3); // fourth element in collection 

el2clone.after(el4); 
el4.after(el2); 
el2.remove(); 

els = $('#myDiv div'); 
+0

なぜ要素をクローンしているのか分かりません。クローンを取ることは、OPが望んでいない新しい要素を作り出します。 –

+0

@Daniel Cassidy DOMの2つの要素を切り替える別の方法をご存知ですか? – CoolEsh

+0

私は彼が**選択**で彼らの位置を変えたいと思っていますが、質問があいまいなので間違っているかもしれません。さらに、DOM内の2つの要素を複製せずに切り替えることは可能ですが、厄介なことであり、JQueryは何も助けてくれません。 –

関連する問題