sortable examples ejemplos jquery jquery-ui jquery-ui-sortable

jquery - examples - sortable js



jquery UI ordenable: ¿cómo puedo cambiar la apariencia del objeto "marcador de posición"? (2)

En el ejemplo dado en http://jqueryui.com/demos/sortable/#placeholder el marcador de posición es el cuadro naranja que aparece al arrastrar cualquiera de los elementos.

Este elemento se puede modificar utilizando la opción placeholder , pero solo le permite modificar la clase del elemento como se describe aquí: http://jqueryui.com/demos/sortable/#options

Me gustaría personalizar más este elemento, por ejemplo, suministrando una función a la opción placeholder de la misma manera que se puede suministrar una función a la opción helper .

¿Qué necesitaría cambiar (por ejemplo, en sortable.js) para hacer esto?


En cuanto a la fuente de ui.sortable.js (1.7.2), puede hacer trampa y establecer el placeholder de placeholder a un objeto con una función de element y una función de update . La función de element se utiliza para devolver el objeto dom de marcador de posición y la función de update permite hacer cosas como corregir su tamaño (puede consultar la función _createPlaceholder dentro de ordenable si desea ver lo que hace la implementación predeterminada).

Entonces, por ejemplo, lo siguiente creará un elemento de lista con la palabra test inside como su marcador de posición (tenga en cuenta que devuelve el objeto dom real ( [0] ) y no el objeto jQuery en sí mismo):

$("#sortable").sortable({ placeholder: { element: function(currentItem) { return $("<li><em>test</em></li>")[0]; }, update: function(container, p) { return; } } });

Si estoy leyendo la fuente correctamente, la función del element debe pasar el elemento actual (objeto jQuery) y this debe apuntar a la sortable misma (es decir $("#sortable") en esta instancia). En la update se pasa el "contenedor", que es el objeto que contiene todas las opciones, el elemento, etc. y el placeholder .

Tenga en cuenta que este es un truco no documentado , por lo que obviamente no será compatible y puede cambiar con la próxima versión de la interfaz de usuario de jQuery ... pero aún puede ser útil para usted, dado que estaba hablando de editar ui.sortable.js directamente de todas formas.

Espero que ayude.


Un enfoque más hackish que encontré: uno puede usar la opción de start para modificar el elemento marcador de posición, por ejemplo, de la siguiente manera

$("#sortable").sortable({ start: function (e, ui) { // modify ui.placeholder however you like ui.placeholder.html("I''m modifying the placeholder element!"); } });