2013-04-27 59 views
0

为什么var test = positions.join("/");返回[对象的对象]/[对象的对象]/[对象的对象]等? 需要更改哪些内容才能正常工作?为什么。加入返回的翻译:

应该返回像0,0/0,360/0660位置。我不知道逗号是否会在那里。

$(function() { 
    $('.AppList').droppable({ 
     accept: ".App", 
     tolerance: 'fit', 
     drop: function(event, ui) { 
      var apps = $(".App"), 
      positions = []; 

      $.each(apps, function (index, app) { 
       var positionInfo = $(app).position(); 

       positions.push(positionInfo); 
      }); 
      var test = positions.join("/"); 
      console.log(test); 
     } 
    }); 
}); 
+0

函数position()返回什么?一个对象,对吧? – 2013-04-27 08:35:37

+5

由于$(app).position()返回的对象类似于{top:10,left:10} – Catalin 2013-04-27 08:35:43

+0

没问题,所以如何解决这个问题? – ChristopherStrydom 2013-04-27 08:37:11

回答

3

如何:

var test = JSON.stringify(positions); 
console.log(test); 

没有必要去创造自己的序列化格式。

+0

雅,那最好不过了+1 – 2013-04-27 08:46:44

+0

啊这是工作。谢谢:) @roasted谢谢你尝试 – ChristopherStrydom 2013-04-27 08:50:09

+0

我现在怎么把它分成数组? – ChristopherStrydom 2013-04-27 08:51:03

1

您正在从函数position()返回对象。试试这个:

$.each(apps, function (index, app) { 
      var pos = $(app).position(), 
       positionInfo = pos.top+","+ pos.left; 

      positions.push(positionInfo); 
     }); 
+0

这现在正在返回[undefined Undefined]? – ChristopherStrydom 2013-04-27 08:39:16

+0

使用的console.log($(APP).POSITION())怎么看你看的对象,这似乎不是.X&.Y,也许.TOP&。左 – 2013-04-27 08:40:03

+0

还好,现在看起来是这样的对象{顶部= 60,left = 0} – ChristopherStrydom 2013-04-27 08:41:25

0

Array.join() method返回一个字符串。由于你的数组项是objects你不能指望什么特别有用 - [object Object]是JavaScript将对象转换为字符串时创建的默认值。