可排序的jQuery重新排列背景数组

时间:2014-01-28 11:39:28

标签: javascript jquery arrays jquery-ui

我有一个项目列表,其中包含文本输入以及其他内容,此列表可由jQuery-ui排序。

文本输入的工作是为项目提供更多选项,

所以我创建了一个包含所有选项的数组,它是这样的:

var options = new Array();
$('.optionInput').keypress(function(event){
 -- some code for enter press --
 var index = $('.inputs .inputOption').index(event.target);
 if(typeof options[index] === 'undefined') options[index] = new Array();
 options[index][options[index].length] = $(event.target).val();
});

其他代码会将其与项目一起显示。

所以我的问题是数组按位置链接到项目,数组索引是位置。

我尝试使用可排序事件'开始'和'更新',我得到了开始和新位置的位置,但我被困在如何从那里继续......

重新安排阵列的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我来到了那里!它有效,但在我看来必须有一个更好的方法

也许有人有更好的主意?

inputBox.sortable({
    handle: '.sortHeader',
    start: function(event, ui){
        sortPositionOld = $('.inputs').index(ui.item);
    },
    update: function(event, ui){
        var sortArr = new Array();
        var sortPositionNew = $('.inputs').index(ui.item);
        var temp;
        for(var index in options){
            if(index == sortPositionNew) temp = sortPositionOld;
            else if(index < sortPositionNew && sortPositionOld < sortPositionNew && index >= sortPositionOld) temp = parseInt(index)+1;
            else if(index > sortPositionNew && sortPositionOld > sortPositionNew && index <= sortPositionOld) temp = parseInt(index)-1;
            else temp = index;
            sortArr[index] = options[temp];
        }
        options = sortArr;
    }
});