2

いくつかのhtml5/jqueryドラッグアンドドロップ機能を実行して、DOM要素のセットを並べ替えています。これらのDOM要素に対応するオブジェクトの配列を変更したいのですが、その方法がよくわかりません。これがjavascriptです:

var draggedIndex = $('.segmentListItem').index($(draggedItem));
var targetIndex = $('.segmentListItem').index($(this));
var playlist = jwplayer().getPlaylist(); //MH - the array for which I want to change the order

if (draggedIndex > targetIndex){
    $(draggedItem).insertBefore($(this));
    //MH - need to move the playlist item at the index of the dragged item before index the target item as well
} else {
    $(draggedItem).insertAfter($(this));
    //MH - need to move the playlist item at the index of the dragged item before index the target item as well

}
4

1 に答える 1

2

プレイリストがオブジェクトではなく通常の配列である場合(配列として参照している)、おそらく次のようになります。

Array.prototype.move = function (old_index, new_index) {
    if (new_index >= this.length) {
        var k = new_index - this.length;
        while ((k--) + 1) {
            this.push(undefined);
        }
    }
    this.splice(new_index, 0, this.splice(old_index, 1)[0]);
};

var draggedIndex = $('.segmentListItem').index($(draggedItem));
var targetIndex = $('.segmentListItem').index($(this));
var playlist = jwplayer().getPlaylist(); //MH - the array for which I want to change the order

if (draggedIndex > targetIndex){
    $(draggedItem).insertBefore($(this));
    playlist.move(draggedIndex, targetIndex);
} else {
    $(draggedItem).insertAfter($(this));
    playlist.move(draggedIndex, targetIndex);
}
于 2012-08-15T19:38:10.367 に答える