javascript - 表格行的切换位置只能工作一次

标签 javascript jquery

我做了一个jsfiddle

我有一个包含文章位置的表格。我会让用户可以通过单击向上或向下箭头来更改位置排序。

但是当我交换一次位置时,我无法再更改已更改行的位置。

函数如下:

function switchPosition( data, direction )
{
    var tableName = "artikelposition";
    currentPosition = parseInt( data['position'] );

    if( direction == "up" )
    {
        newPosition = currentPosition - 1;
    }
    else if( direction == "down" )
    {
        newPosition = currentPosition + 1;
    }

    var otherTr = $("tr[data-position='" + newPosition + "']").data("artikelid");
    console.log("clicked object" + data['artikelid'] + " : current position " + data['position'] + " : new position " + newPosition);
    console.log("other objekt" + $("#" + otherTr).data("artikelid") + " : current position " + $("#" + otherTr).data("position") + " : new Position " + currentPosition);

    $( "#" + data['artikelid'] )
        .data({
            "position": newPosition
        });
    $( "#" + data['artikelid'] + " td.tdArticleNumber span.spanPositionNummer" )
        .html( newPosition );


    $( "#" + otherTr )
        .data({
            "position": currentPosition
        });
    $( "#" + otherTr + " td.tdArticleNumber span.spanPositionNummer" )
        .html( currentPosition );

    sortTable( tableName );
}

最佳答案

正如 ASGM 已经提到的,问题出在 otherTr 上。在这一行中:

var otherTr = $("tr[data-position='" + newPosition + "']").data("artikelid");

我仍然不知道为什么这个表达式总是返回第一个 trdata-artikelid,但是如果你想保存你的代码,那么你可以使用 replace这一行是这样的:

$("#artikelposition tr").each(function()
{
    var that = $(this);
    if (that.data("position") == newPosition)
    {
        otherTr = that.data('artikelid');
    }
});

正如 Pawel 所说 there in comments ,问题是 data-position 是动态设置的。但即使是他使用 $("...").attr("data-...", value) 的想法似乎也行不通。

关于javascript - 表格行的切换位置只能工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24776889/

相关文章:

javascript - 在 Sublime Text 中运行 JavaScript

javascript - AngularJS 指令运行时模板更改

javascript - 如何在php中执行生成CSV文件?

javascript - JQVMap - 如何在区域点击时显示数据值

javascript - 使用 Javascript 在特定情况下将文本插入到特定范围

javascript - 使用 Ajax 和 Jquery 加载内容

javascript - ngModel 未在选择中更新

javascript - jQuery Accordion ,单击已打开的 Accordion 项目只需切换它

javascript - 口吃背景图片IE

javascript - 如何在将新数据附加到 window 时重新加载 jQuery 插件。没有提供 reload() 方法