2010-11-01 22 views
8

¿Es posible tener elementos ordenables, pero aún así permitir a los usuarios copiar/pegar el texto dentro de los elementos?ordenable con texto seleccionable

<div class="sortable"> 
    <div class="pseudo-sortable">Foo</div> 
    <div class="pseudo-sortable">Bar</div> 
    <div>other stuff that i don't care if a user 
     can't copy (maybe images or buttoms)</div> 
</div> 

que puede fácilmente hacer:

$('.sortable').sortable({cancel: '.pseudo-sortable'}); 

Esto permitirá que seleccione el texto en el navegador y copiar/pegar si quiero. Sin embargo, esto también hace que la persona no pueda arrastrar/soltar. Por lo tanto, creo que lo que me gustaría es comenzar con la cancelación, pero si el mouse sale una cierta distancia fuera del contenedor, los pseudo-sortables ya no se cancelan. ¿Tiene sentido?

Si esto no es posible, mi última opción sería aplicar un disparador que cambie los contenedores entre ordenable y no ordenable, para que puedan seleccionar el texto, pero preferiría minimizar los clics en la interfaz de usuario.

Respuesta

15

¿Qué hay de poner el texto en un <span>?

HTML

<ul id="sortable"> 
    <li><span>Item 1</span></li> 
    <li><span>Item 2</span></li> 
    <li><span>Item 3</span></li> 
    <li><span>Item 4</span></li> 
    <li><span>Item 5</span></li> 
    <li><span>Item 6</span></li> 
    <li><span>Item 7</span></li> 
</ul> 

jQuery

$("#sortable").sortable({ 
    revert: true, 
    cancel: "#sortable li span" 
}); 

Inténtelo aquí: http://jsfiddle.net/6uXx8/

+0

Por lo tanto, esto permite que el texto sea seleccionable, pero no se puede arrastrar. Lo que me gusta es que sea seleccionable, pero se puede arrastrar después de cierta distancia (~ 100 px) fuera del contenedor. – vol7ron

+0

gracias, esto es lo que necesitaba! –

+0

Lo que yo quería no era fácilmente posible, así que supongo que esta sería la mejor respuesta – vol7ron

1

Intente agregar handle. La idea es que solo pueda comenzar a arrastrar el elemento desde el controlador, que podría ser, por ejemplo, un icono dentro del elemento.

+0

Sé que eso es posible, pero quiero que todo el contenido, texto incluido, para ser arrastrable . Solo que lo quiero para que el texto también sea copy/pasteable. Entonces, aplicando un movimiento de distancia mínima antes de que el elemento sea arrastrable si se agarra por el texto. – vol7ron

+0

Desea mucho;) pero en serio, sugiero decididamente si el texto es seleccionable o se puede arrastrar; hacer ambas cosas parece incómodo y los usuarios se confundirán con la OMI. – cambraca

+0

Sí, esto es algo un poco más avanzado para reducir la cantidad de clics del mouse. Actualmente, tengo un botón de bloqueo/desbloqueo que cambia la clase entre arrastrable y no arrastrable, que funciona. Solo trato de reducir esos mini botones y hacer todo mejor. – vol7ron

Cuestiones relacionadas