获得某些交换位置的确定

时间:2014-08-22 19:38:23

标签: javascript jquery html css

我试图让某些td(不是全部)不同的tr的效果与直接在其上方或下方的地方交换位置。我只希望最后3 td不是整行。我似乎很难找到一些只能做我想要的东西,而不是整行。

您可以看到我在此处设置的示例:http://codepen.io/anon/pen/qwHbz

我知道你可以这样做:

$("#Row1").after($("#Row2"));

但是我不想要整行。因此,如果我在拥有它的第一行上单击.saTableDown,我希望Target,Level和指令与它下面的那些交换,依此类推。在jquery / javascript中有可能是这样吗?如果是这样,我似乎无法弄明白。谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

http://codepen.io/anon/pen/rEJxH

我会找到你点击上/下的tr的索引,如果它不是第一个/最后一个,请将它与上一个/下一个tr交换。然后将数字交换回来。我已经给出了数字td为.num的类,而目标为td为.target的类,我假设您可以访问该标记以便能够执行此操作。

jQuery的:

$('.saTableUp').click(function(){
    //find the index of the parent tr
    var parentTr = $(this).parent().parent();
    var index = parentTr.index();

    // if not the first element
    if (index > 1) {
      var parentSwap = parentTr.prev();
      //swap rows
      parentSwap.before(parentTr);
      // move one number up a row
      parentTr.children('.num').before(parentSwap.children('.num'));
      // move other number (now the second .num in the row) down a row
      parentSwap.children('.target').before(parentTr.children('.num:eq(1)'));
    }
});

$('.saTableDown').click(function(){
    //find the index of the parent tr
    var parentTr = $(this).parent().parent();
    var index = parentTr.index();

    // if not the last element
    if (index < 4) {
      var parentSwap = parentTr.next();
      //swap rows
      parentSwap.after(parentTr);
      // move one number down a row
      parentTr.children('.num').before(parentSwap.children('.num'));
      // move other number (now the second .num in the row) up a row
      parentSwap.children('.target').before(parentTr.children('.num:eq(1)'));
    }
});