¿Cómo puedo intercambiar dos elementos en un observableArray?

Tengo un botón que mueve un elemento una posición a la izquierda en una matriz observable. Lo estoy haciendo de la siguiente manera. Sin embargo, el inconveniente es que las categorías () [índice] se eliminan de la matriz, descartando así cualquier manipulación DOM (mediante la validación de jQuery en mi caso) en ese nodo.

¿Hay una manera de intercambiar dos elementos sin usar una variable temporal para preservar el nodo DOM?

<code>    moveUp: function (category) {
        var categories = viewModel.categories;
        var length = categories().length;
        var index = categories.indexOf(category);
        var insertIndex = (index + length - 1) % length;

        categories.splice(index, 1);
        categories.splice(insertIndex, 0, category);
        $categories.trigger("create");
    }
</code>

Respuestas a la pregunta(4)

Su respuesta a la pregunta