Javascript JQuery:松开<;tr>;使用replaceWith()方法时的id
我正在尝试实现一个函数,它将改变表中元素的顺序。逻辑很简单:每个TR(第一个和最后一个除外)都有一个向上按钮和一个向下按钮。当用户单击其中一个按钮时,元素将使用上面或下面的按钮更改其位置 为此,我使用jQuery,每个TR都有一个唯一的Id,按钮都有一个公共类 单击带有特定类的按钮时,我正在执行以下JavaScript代码:Javascript JQuery:松开<;tr>;使用replaceWith()方法时的id,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试实现一个函数,它将改变表中元素的顺序。逻辑很简单:每个TR(第一个和最后一个除外)都有一个向上按钮和一个向下按钮。当用户单击其中一个按钮时,元素将使用上面或下面的按钮更改其位置 为此,我使用jQuery,每个TR都有一个唯一的Id,按钮都有一个公共类 单击带有特定类的按钮时,我正在执行以下JavaScript代码: $('.upArrow').click( function(something) { var id
$('.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);
}
$('.upArrow')。单击(函数(某物)
{
var id=$(this.attr(“id”);
var n=id.split(“”);
var new_id='#row_'+n[1];
var parent=$(新的\u id);
var prev=$(新的_id).prev();
掉期(上一个,母公司);
初始化作者列表排序();
});
$('.downArrow').live('click',function()
{
var id=$(this.attr(“id”);
var n=id.split(“”);
var new_id='#row_'+n[1];
var parent=$(新的\u id);
var next=$(新的_id).next();
掉期(下一个,母公司);
初始化作者列表排序();
});
}
功能交换(a、b、方向)
{
var html=a.wrapInner(“”).html();
a、 替换为(b.wrapInner(“”).html());
b、 替换为(html);
}
问题是:第一次,一切都很好(我的funxtion还没有完成,我必须在更改时设置一些其他参数,但逻辑是存在的)。但是后来,两个改变位置的人失去了TR的id,所以他们再也不能被触碰了
我不知道为什么身份证丢了。这是replaceWith()方法
欢迎任何帮助。谢谢。您的常量
没有id属性,因此它最终没有id属性
编辑:
以下是我提到的:
function swap(a, b, direction)
{
var html = a.wrapInner('<tr></tr>').html();
a.replaceWith(b.wrapInner('<tr></tr>').html());
b.replaceWith(html);
}
功能交换(a、b、方向)
{
var html=a.wrapInner(“”).html();
a、 替换为(b.wrapInner(“”).html());
b、 替换为(html);
}
要交换元素,只需执行以下操作:
function swap(a, direction, b) {
a[direction](b);
}
然后像这样打电话:
var firstElem = $('#divID'),
secondElem = $('#divID');
swap(firstElem, 'before', secondElem); // or after, whatever you need ?
您不必更换元件来交换它们->
a.before(b)代码>这应该有帮助:@adeneo,就这么简单。谢谢。你能回答这个问题吗?这样我可以确认一下。Thanks@dystroy,非常感谢。before或after函数非常出色。在我的模板(html)中有一个id属性。注意,我的答案是为什么,而不是如何修复它,这取决于您的决定,使用.before(),.after()
或调整id-它们对DOM交互有不同的影响。