テーブル内の要素の順序を変更する関数を実装しようとしています。ロジックは非常に簡単です。各 TR (最初と最後のものを除く) には、button_up と button_down があります。ユーザーがこれらのボタンの 1 つをクリックすると、要素の位置が上または下に変わります。
これを行うために、私は jQuery を使用しており、各 TR には一意の ID があり、ボタンには共通のクラスがあります。
特定のクラスのボタンをクリックすると、次の JavaScript コードが実行されます。
$('.upArrow').click( function(something)
{
var id = $(this).attr("id");
var n=id.split("_");
var new_id = '#row_'+n[1];
var parent =$(new_id);
var prev = $(new_id).prev();
swap(prev, parent);
init_authors_list_ordering();
});
$('.downArrow').live('click', function()
{
var id = $(this).attr("id");
var n=id.split("_");
var new_id = '#row_'+n[1];
var parent =$(new_id);
var next = $(new_id).next();
swap(next, parent);
init_authors_list_ordering();
});
}
function swap(a, b, direction)
{
var html = a.wrapInner('<tr></tr>').html();
a.replaceWith(b.wrapInner('<tr></tr>').html());
b.replaceWith(html);
}
問題は次のとおりです。初めて、すべてが正常に機能します(私の機能は終了していません。変更時に他のパラメーターを設定する必要がありますが、ロジックはそこにあります)。しかし、その後、入れ替わった2つのエレメントはTRのIDを失ったため、もう触れることはできません。
なぜIDが失われたのかわかりません。これが replaceWith() メソッドです。
どんな助けでも大歓迎です。ありがとうございました。