2011-10-17 3 views
0

残念ですが、問題タイトルはちょっと曖昧です。jquery swapping elements:要素IDは変更されますが、DOMは更新されません。

私はより良いライブexmapleを使用してそれを説明することができると思い

http://sumsy.com/temp/sorttest/

ADDED JS BINリンク:http://jsbin.com/ibewar/4/edit

私はそれを何をしたいのかは、「下に移動」をクリックすることで、それが入れ替わります現在のdivと次のdiv。

私のアプローチは次のとおりです。 は0たび 3からのdiv IDを設定してくださいスワップ/下に移動し、div要素のidを対象にその常にケース=スワップが完了した後、現在のdivのid + 1 、再びIDをリセットし、注文を維持するために0から3まで。

問題: 「テキストA(下に移動)」をクリックしてみてください。問題はありません。 「テキストA(下に移動)」を再度クリックすると、AのIDは2、Cは3であるため、Cとスワップする必要があります。 しかし、問題はAがBと再び入れ替えられたことです。

スワップ後にDOMが更新/リフレッシュされていないようですか?

Aはリストの2番目ですが、何とかHTMLマークアップではまだ最初のものとして表示されています。

ご協力いただければ幸いです。

ありがとうございました。

+0

私はこのためにIDを使用しません。 data-sort-order = "1"はどうですか?また、アイテムを絶対的に配置しているため、DOMの順序が変更されたとは思いません。 – natedavisolds

+0

申し訳ありませんが、私はHTMLマークアップに多くのコントロールがないとしましょう。私は 'data-sort-order = "1"をhtmlに追加することはできません。他の解決策はありますか?ありがとう。 –

答えて

0

これは、スワップ機能が実際にDOMを再注文していないためです。(firebugを使用していることに気づいた場合)、要素の相対位置を変更するだけです。したがって、あなたは自分のIDを決定するためにDOM内の位置に頼ることはできません。

スワップアニメーションが完了したら、物理的にDOM内の要素を移動します。スワップ方式で設定された位置を消去する必要があります。 DOM内の要素を並べ替えるには、afterメソッドを使用できます。

+0

素晴らしい。問題が何であるかを知ることは良いことです。今、私は修正を行うことができます。ありがとう! –

関連する問題