Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery:松开<;tr>;使用replaceWith()方法时的id_Javascript_Jquery_Html - Fatal编程技术网

Javascript JQuery:松开<;tr>;使用replaceWith()方法时的id

Javascript JQuery:松开<;tr>;使用replaceWith()方法时的id,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试实现一个函数,它将改变表中元素的顺序。逻辑很简单:每个TR(第一个和最后一个除外)都有一个向上按钮和一个向下按钮。当用户单击其中一个按钮时,元素将使用上面或下面的按钮更改其位置 为此,我使用jQuery,每个TR都有一个唯一的Id,按钮都有一个公共类 单击带有特定类的按钮时,我正在执行以下JavaScript代码: $('.upArrow').click( function(something) { var id

我正在尝试实现一个函数,它将改变表中元素的顺序。逻辑很简单:每个TR(第一个和最后一个除外)都有一个向上按钮和一个向下按钮。当用户单击其中一个按钮时,元素将使用上面或下面的按钮更改其位置

为此,我使用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);
}
$('.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交互有不同的影响。