我正在尝试实现一个将更改表中元素顺序的函数。逻辑很简单:每个 TR(除了第一个和最后一个)都有一个 button_up 和一个 button_down。当用户单击其中一个按钮时,该元素将使用上方或下方的按钮更改其位置。
为此,我使用 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);
}
问题是:第一次,一切正常(我的功能还没有完成,我必须在更改时设置一些其他参数,但逻辑就在那里)。但是后来,这两个换了位置的元素,都失去了TR的id,不能再动了。
我不知道为什么ID丢失了。这是 replaceWith() 方法。
欢迎任何帮助。谢谢你。