【发布时间】:2012-12-07 13:04:33
【问题描述】:
我正在尝试实现一个改变表格中元素顺序的函数。逻辑很简单:每个 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() 方法。
欢迎任何帮助。谢谢。
【问题讨论】:
-
你不必替换元素来交换它们 ->
a.before(b); -
这应该会有所帮助:stackoverflow.com/questions/698301/…
-
@adeneo,就这么简单。非常感谢。能否请您回答问题,以便我确认。谢谢
-
@dystroy,非常感谢。之前或之后的功能非常好。
标签: javascript jquery html