【问题标题】:Get a table object from sortable table从可排序表中获取表对象
【发布时间】:2018-07-30 13:10:11
【问题描述】:

假设我有一个任意长度的表格,我可以移动它们,并且我想获取我释放鼠标的表格元素,我有来自 jquery + jquery.sortable 的鼠标释放等桌子。

这种工作还不是 100%,如果你移动它,它会在列表中的第一个出现错误,但它与我的 atm 一样近,任何建议都是适用的,tbody 是我的桌子,但它可以是任何桌子。我放弃了(x,y)坐标

下面是一个试图暴露我的想法的代码示例:

 <script type="text/javascript">
     var arr2;
     $('tbody').sortable({
     start: function(e, ui) {
            arr2 = ($.map($(this).find('tr'), function(el) {
                return $(el).attr('id');
            }));
        }
    });
     $('tbody').sortable({
     stop: function(e, ui) {
      newArr = ($.map($(this).find('tr'), function(el) {
          return $(el).attr('id');
          }));
            function oldArr(arr) {
                var i=0, res = [];
                    while(i<arr.length && typeof(arr2[i]) !== 'undefined'){
                            res.push(arr[i]);
                            i++;
                            }
                return res;
            }
            outOld = oldArr(arr2);

            function findMovedFrom(arr, arr2) {
                if(arr.length == arr2.length){
                    for(j = 0; j < arr.length; j++){
                        if(arr[j] !== arr2[j]){
                            if(arr[j] == arr2[j-1]){
                                return arr[j];
                            }else{
                                return arr2[j];
                            }
                        }
                    }
                }
            }
            alert(" from \n"+  findMovedFrom(outOld,newArr) + "\n to before \n" + newArr[(newArr.indexOf(findMovedFrom(outOld,newArr))) + 1] +  "\n" );
        }
    });      
 </script>

【问题讨论】:

  • 我假设您所说的可排序是指jquery ui sortable plugin?
  • 是的,我用它来使其可排序,认为这是一个直接的 jquery
  • elementFromPoint(x,y) 也没有解决它,它只是得到了 someId
  • 听起来你陷入了自己制造的兔子洞。从实际目标开始,你到底想弄清楚什么?由于使用了 Sortable,您可以从 stopupdate 中确定元素,因为 ui.item 被传回给这些元素。你也可以用一个独特的类来标记它,然后调用$(".myElement") 或类似的东西。
  • 目标是确定我从桌子上的位置以及我在桌子上放置对象的位置,将其显示给用户并感谢它听起来确实像我回到了其他想法

标签: javascript jquery jquery-ui jquery-ui-sortable


【解决方案1】:

Finnaly 解决了这个问题,如果有人想从可排序表格的哪个位置找到您将对象从何处拖动到何处,tbody 是您的表格行,非常感谢@Twisty

 <script type="text/javascript">
    var arr2;
     $('tbody').sortable({
     start: function(e, ui) {
            arr2 = ($.map($(this).find('tr'), function(el) {
                return $(el).attr('id');
            }));
        }
    });
     $('tbody').sortable({
     stop: function(e, ui) {
      newArr = ($.map($(this).find('tr'), function(el) {
          return $(el).attr('id');
          }));

            function oldArr(arr) {
                var i=0, res = [];
                    while(i<arr.length && typeof(arr2[i]) !== 'undefined'){
                            res.push(arr[i]);
                            i++;
                            }
                return res;
            }
            outOld = oldArr(arr2);

            function findMovedFrom(arr, arr2) {
                if(arr.length == arr2.length){
                    for(j = 0; j < arr.length; j++){
                        if(arr[j] !== arr2[j]){
                            if(arr[j] == arr2[j-1] || arr2[j-1] === null || arr2[j-1] === undefined){
                                return arr[j];
                            }else{
                                return arr2[j];
                            }
                        }
                    }
                }
            }
            alert("from \n"+ findMovedFrom(outOld,newArr) + "\nto before\n" + newArr[(newArr.indexOf(findMovedFrom(outOld,newArr))) + 1] +  "\n");
        }
    });

   </script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 2015-11-24
    • 2015-03-31
    • 1970-01-01
    • 2012-04-08
    • 2014-09-28
    • 2019-05-08
    相关资源
    最近更新 更多