【发布时间】:2010-01-27 19:48:20
【问题描述】:
我有一个 javascript 数组,它看起来像:
var styles = new Array();
styles[0] = { ... Position: 0, ... };
styles[1] = { ... Position: 1, ... };
styles[2] = { ... Position: 2, ... };
...
styles[N] = { ... Position: N, ... };
我使用这个数组来显示一个列表,其中每个项目都是一个 div。最终结果是这样的:
<div id="container">
<div>... item 1...</div>
<div>... item 2...</div>
<div>... item 3...</div>
</div>
现在“容器”div 也是 jquery 可排序的。这样我就可以拖放项目并更改位置。现在,每当用户将一个项目拖到不同的位置时,我都会通过循环遍历 div 项目来更新数组中的位置,这非常糟糕。它看起来或多或少是这样的:
var items = $("#container");
for (var i = 0; i < items.length; i++)
{
....
styles[i] = { ... Position: i, ... };
}
有没有更好的方法来实现这一点?
更新 1:
我需要将位置保存在数据库中,这就是为什么我需要在列表更改后更改我的数组。该列表会根据其他标准而变化。所以我可以有一个包含 10 个项目的列表,或者我可以有一个 X 个项目的列表。这取决于用户选择的列表。现在,如果用户更改了一个列表,然后想要查看第二个列表,那么我需要确保第一个列表保持位置。
【问题讨论】:
-
循环后有什么变化吗? style[i] = { Position: i },总是一样的。你的数组索引就是你的位置。现在,……里面的东西似乎更重要了。
-
我更新了我的问题。请看我的评论。
-
我更新了我的回复,并举例说明了您将如何更新职位。
标签: javascript jquery jquery-ui-sortable